案例1:
在光标内的while循环中反复调用存储过程(例如 sp )(比如说50次)。
while (i<50)
begin
call sp
i = i+1
end
案例2:
直接在光标内的while循环中写入 sp 的逻辑。
while (i<50)
begin
/*do calculations (no call to any stored procedure)*/
i = i+1
end
在哪种情况下性能会更好?
编辑1:
sp 的逻辑如下:
SELECT
@myDate = CASE WHEN @val = 'A'
THEN DATEADD (DY,1,@anotherDate)
WHEN @val = 'B'
THEN @someDate
END
/* Another stored procedure call */
EXEC someProc @myDate, @isXXX output
IF (@isXXX>0)
BEGIN
IF (@val = 'A')
BEGIN
SELECT @Flag='Y1'
END
ELSE
IF (@val = 'B')
BEGIN
SELECT @Flag='Y2'
END
END
ELSE
BEGIN
SELECT @Flag='N'
END