SQL 游标有效但数据库不保存更改

SQL cursor works but db doesn't save changes

我有一个 table,其中有不需要的字符 (Ý),我想用 "I" 替换它。在我为另一个列名尝试该代码之前,它工作得很好。但是现在在调试时我可以看到它修复了行但是最后数据库没有变化......这是我的代码如下:

  DECLARE @CARI_NAME varchar(100)
  DECLARE CRS_FixCariNameCURSOR FOR
  SELECT CARI_NAME FROM TBLCASABIT

  OPEN CRS_CariIsimDuzelt

  FETCH NEXT FROM CRS_FixCariNameINTO @CARI_NAME 

  WHILE @@FETCH_STATUS=0

  BEGIN
  IF @CARI_NAME LIKE '%Ý%'
  UPDATE TBLCASABIT SET @CARI_NAME = REPLACE(@CARI_NAME ,'Ý','I')
  WHERE CURRENT OF CRS_FixCariName
  FETCH NEXT FROM CRS_FixCariNameINTO @CARI_NAME 
  END

  CLOSE CRS_FixCariName
  DEALLOCATE CRS_FixCariName

UPDATE TBLCASABIT SET @CARI_NAME = REPLACE(@CARI_NAME ,'Ý','I') 您更新了变量而不是列!

使用: UPDATE TBLCASABIT SET CARI_NAME = REPLACE(@CARI_NAME ,'Ý','I') 如果您要更新的列名为 CARI_NAME

但更重要的是 - 你为什么还要在这里使用光标? 简单更新做同样的工作更有效(如果我错了请纠正我):

  UPDATE TBLCASABIT
  SET CARI_NAME = REPLACE(CARI_NAME ,'Ý','I')
  WHERE CARI_NAME LIKE '%Ý%'