【发布时间】:2009-02-21 00:46:12
【问题描述】:
我需要使用游标来调用一个存储过程,该存储过程有 2 个参数需要从客户表中传入。
这就是我的意思;
我的目标是将客户表中的所有 CustomerID 和 CustomerName 传递到我的名为 AddCustomers 的存储过程中,该过程具有 CustomerID 和 CustomerName 2 个参数。 即:AddCustomer [CustomerID],[CustomerName] [旁注:这个 AddCustomer 存储过程做了一些我的应用程序需要的过滤操作]
因此,将此 CURSOR 与存储过程一起使用的最终结果是将客户表中的所有 customerID 和 CustomerName DUMP/PASS 到 AddCustomer 存储过程中。
我用过sp_executesql,但没有成功。
这是我尝试过但不起作用的方法。
Declare @CustomerID int
Declare @CustomerName varchar(100)
Declare cur CURSOR READ_ONLY
FOR
SELECT CustomerID, CustomerName
from Customers
OPEN cur
FETCH NEXT FROM cur
INTO @CustomerID, @CustomerName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC AddCustomer @CustomerID, @CustomerName
FETCH NEXT FROM cur
INTO @CustomerID, @CustomerName
END
CLOSE cur
DEALLOCATE cur
我不熟悉游标的使用,所以我不确定为什么这不起作用。如果您能提供任何线索或链接,我将不胜感激。
更新:
好的,如果光标不能循环通过存储过程,那么任何人都可以为我的问题提供解决方案或提示,即传递客户表中的所有 CustomerID 和 CustomerName 到我的 AddCustomer 存储过程中,以便我可以对传递给 AddCustomer 存储过程的每个 CustomerID 和 CustomerName 进行一些过滤。
【问题讨论】:
-
我不记得确切的错误信息,但它与表格有关。我严重认为我上面的脚本不正确,因为它没有将 CustomerID 和 CustomerName 传递到我的光标循环中。
标签: sql sql-server stored-procedures