WHILE @@fetch_status=0
BEGIN
IF SUBSTRING(@DANHAO,1,2)='ML'
BEGIN
UPDATE AA SET REM=@REM
END
IF SUBSTRING(@DANHAO,1,2)='IC'
BEGIN
UPDATE BB SET REM=@REM
END
IF SUBSTRING(@DANHAO,1,2)='PC'
BEGIN
UPDATE CC SET REM=@REM
END
SET @I=@I+1
fetch next from LOT_NO into @DANHAO,@PRD_NO,@REM
END上面的三个IF语句块截取自一个游标语句,目的是根据SUBSTRING(@DANHAO,1,2)不同而UPDATE不同的表,但上面的写法效率比较低,游标每移动一次都要进行三次判。
当然可以使用嵌套的IF...ELSE语句块,但总觉得不是最好的方法。
CASE...WHEN好像不能进行这样的判断,如果能有类似程序开发中的CASE语句功能就好了。
请教大家有没有更好的方法这,效率更高?
BEGIN
IF SUBSTRING(@DANHAO,1,2)='ML'
BEGIN
UPDATE AA SET REM=@REM
END
IF SUBSTRING(@DANHAO,1,2)='IC'
BEGIN
UPDATE BB SET REM=@REM
END
IF SUBSTRING(@DANHAO,1,2)='PC'
BEGIN
UPDATE CC SET REM=@REM
END
SET @I=@I+1
fetch next from LOT_NO into @DANHAO,@PRD_NO,@REM
END上面的三个IF语句块截取自一个游标语句,目的是根据SUBSTRING(@DANHAO,1,2)不同而UPDATE不同的表,但上面的写法效率比较低,游标每移动一次都要进行三次判。
当然可以使用嵌套的IF...ELSE语句块,但总觉得不是最好的方法。
CASE...WHEN好像不能进行这样的判断,如果能有类似程序开发中的CASE语句功能就好了。
请教大家有没有更好的方法这,效率更高?
set @tbname=case SUBSTRING(@DANHAO,1,2) when 'ML' then 'AA' when 'IC' then 'BB' when 'PC' then 'cc' else '其他' endWHILE @@fetch_status=0
BEGIN
exec('UPDATE '+@tbname+' SET REM='''+@REM+'''')
SET @I=@I+1
fetch next from LOT_NO into @DANHAO,@PRD_NO,@REM
END