在这里有这个代码:
DECLARE @rowfoo integer
DECLARE @query varchar (32000)
SET @query = 'CREATE OR REPLACE PROCEDURE testprocedure AS
BEGIN
print ''Just a dummy text''
END'
DECLARE test_cursor CURSOR FOR
SELECT row_num FROM sa_rowgenerator(1, 31, 1)
OPEN test_cursor
FETCH NEXT test_cursor into @rowfoo
WHILE @@FETCH_STATUS = 0
BEGIN
execute(@query)
FETCH NEXT test_cursor into @rowfoo
END
CLOSE test_cursor
DEALLOCATE test_cursor
execute(@query)
我已经认识到,在语句之后游标正在关闭。根据我到目前为止的发现,这是因为对 DDL 语句进行了隐式提交。由于我需要通过脚本创建多个程序,是否有解决此问题的方法?
打开游标时,存在
WITH HOLD
防止问题。所以对我的情况很好。作为替代
close_on_endtrans
选项,也可以切换为会话或公共。