gpt4 book ai didi

sql - 是否可以在不使用游标的情况下对集合执行存储过程?

转载 作者:行者123 更新时间:2023-12-02 02:44:48 24 4
gpt4 key购买 nike

我想对集合中的每一行执行存储过程,而不使用类似这样的游标:

SELECT EXEC dbo.Sproc @Param1 = Table1.id<br/>
FROM Table1


我在 SQL Server 2005 中使用 T-SQL。我认为使用函数可能可以实现这一点,但如果可能的话我想使用存储过程(公司标准)

最佳答案

是的。如果您可以在表中使用一列来标记已处理的列,则可以使用 WHILE EXISTS:

DECLARE @Id int
WHILE EXISTS(SELECT * FROM Table1 WHERE Processed='N')
BEGIN
SELECT Top 1 @Id = id from Table1 WHERE Procesed='N'
EXEC dbo.Sproc @Id
UPDATE Table1 SET Processed = 'Y' WHERE Id = @Id
END

或者,将 ids 转储到临时表或表变量中,并在完成后删除:

DECLARE @HoldTable table (Id int PRIMARY KEY)
DECLARE @Id int
INSERT INTO @HoldTable SELECT Id FROM Table1
WHILE EXISTS(SELECT * FROM @HoldTable)
BEGIN
SELECT @Id = id from @HoldTable
EXEC dbo.Sproc @Id
DELETE FROM @HoldTable where Id = @Id
END

关于sql - 是否可以在不使用游标的情况下对集合执行存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/477064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com