在游标中调用存储过程 - 性能

时间:2016-05-12 05:57:19

标签: sql performance stored-procedures cursor sybase

案例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

0 个答案:

没有答案