在使用游标之前,必须先打开游标。然后,如果想要遍历整个数据库表,则必须通过fetch next语句预读取数据库表的第一行:
open tCursor
fetch next
from tCursor
into @caseID,@input,@expected
fetch next
from tCursor
into @caseID,@input,@expected
对第一行进行预读取是为了对下面的循环进行控制,使用变量@@fetch_status来控制用于读取的这个循环,这个变量表示最近一次fetch操作的状态。如果fetch操作成功,则@@fetch_status值为0 。如果值为-1或-2则意味fetch失败。因此可以像下面这样每次一行地遍历整个数据库表:
while @@fetch_status = 0
begin
——运行测试用例
fetch next
from tCursor
into @caseID,@input,@expected
end
begin
——运行测试用例
fetch next
from tCursor
into @caseID,@input,@expected
end
在主循环内部,需要调用待测存储过程,并且把测试用例输入数据传给它。接下来取回返回值并打印pass或fail消息:
exec @actual = dbEmployees.dbo.usp_StatusCode @input
if (@actual = @expected)
begin
set @resultLine = @caseID + ': Pass'
print @resultLine
end
else
begin
set @resultLine = @caseID + ': FAIL'
print @resultLine
end
if (@actual = @expected)
begin
set @resultLine = @caseID + ': Pass'
print @resultLine
end
else
begin
set @resultLine = @caseID + ': FAIL'
print @resultLine
end
使用完一个SQL游标之后,必须要关闭这个游标并且调用deallocate命令把它作为一个资源进行释放:
close tCursor
deallocate tCursor
deallocate tCursor
如果忘了对游标进行deallocate操作,下一次执行测试套件脚本需要声明游标的时候,脚本就会报错。