SQL游标有效,但db不保存更改

时间:2015-05-20 06:30:40

标签: sql-server cursor replacewith

我有一个表有不受欢迎的字符(Ý),我想用“I”替换它。在我尝试使用其他列名称的代码之前,它完美无缺。但是现在虽然在debuging我可以看到它修复了行,但最后db没有变化......这是我的代码如下:

  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

1 个答案:

答案 0 :(得分:2)

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 '%Ý%'