Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 在循环中调用游标_Sql Server 2008_Database Cursor - Fatal编程技术网

Sql server 2008 在循环中调用游标

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已经打开,所以出现了错误 知道我如何

我已经创建了一个过程(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