我需要遍历存储过程中的记录集,并使用每个字段作为参数执行另一个存储过程。我无法在代码中完成此迭代。我在互联网上找到了样本,但它们似乎都在处理一个柜台。我不确定我的问题是否涉及柜台。我需要一个的T-SQL等效项,每个
当前,我的第一个存储过程将其记录集存储在临时表#mytemp中。我假设我将像这样调用辅助存储过程:
while (something)
execute nameofstoredprocedure arg1, arg2, arg3
end
最佳答案
您需要创建一个游标来遍历记录集。
示例表:
CREATE TABLE Customers
(
CustomerId INT NOT NULL PRIMARY KEY IDENTITY(1,1)
,FirstName Varchar(50)
,LastName VARCHAR(40)
)
INSERT INTO Customers VALUES('jane', 'doe')
INSERT INTO Customers VALUES('bob', 'smith')
光标:
DECLARE @CustomerId INT, @FirstName VARCHAR(30), @LastName VARCHAR(50)
DECLARE @MessageOutput VARCHAR(100)
DECLARE Customer_Cursor CURSOR FOR
SELECT CustomerId, FirstName, LastName FROM Customers
OPEN Customer_Cursor
FETCH NEXT FROM Customer_Cursor INTO
@CustomerId, @FirstName, @LastName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @MessageOutput = @FirstName + ' ' + @LastName
RAISERROR(@MessageOutput,0,1) WITH NOWAIT
FETCH NEXT FROM Customer_Cursor INTO
@CustomerId, @FirstName, @LastName
END
CLOSE Customer_Cursor
DEALLOCATE Customer_Cursor
这是有关如何创建它们的MSDN链接。
http://msdn.microsoft.com/en-us/library/ms180169.aspx
这就是为什么我使用Raise Error而不是PRINT进行输出的原因。
http://structuredsight.com/2014/11/24/wait-wait-dont-tell-me-on-second-thought/
关于sql-server-2005 - 如何遍历存储过程中的记录集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2622230/