Sql server 2008 在循环中调用游标
我已经创建了一个过程(p1)。此过程将打开一个光标(c1)。我在循环中为每一行游标调用另一个过程(p2)。这个过程需要22秒到120秒。 在步骤P1中,我打开、关闭并释放光标c1。这个很好用 现在程序P1有一个输入。因此,我用游标(c2)编写了另一个过程(p3)。 游标c2获取p1的输入。现在C2的行数是1403。所以我从P3呼叫p11403次。 这会产生错误: 错误:试图打开C1的光标已打开 我知道Sql server试图为C2中的多行同时运行P1。由于C1已经打开,所以出现了错误Sql server 2008 在循环中调用游标,sql-server-2008,database-cursor,Sql Server 2008,Database Cursor,我已经创建了一个过程(p1)。此过程将打开一个光标(c1)。我在循环中为每一行游标调用另一个过程(p2)。这个过程需要22秒到120秒。 在步骤P1中,我打开、关闭并释放光标c1。这个很好用 现在程序P1有一个输入。因此,我用游标(c2)编写了另一个过程(p3)。 游标c2获取p1的输入。现在C2的行数是1403。所以我从P3呼叫p11403次。 这会产生错误: 错误:试图打开C1的光标已打开 我知道Sql server试图为C2中的多行同时运行P1。由于C1已经打开,所以出现了错误 知道我如何
知道我如何限制P3一次执行一个P1吗。您如何在P1中声明光标C1?它是本地游标还是全局游标?本地游标应该能够被声明任意多次,因为它只在单个过程的范围内使用
DECLARE customerCursor LOCAL
如果没有为游标定义全局/局部,它将使用以全局开头的数据库默认值(来自游标\默认值)
如果上述方法没有帮助,是否可以看到简化的程序版本以便于测试
问候,,
M