首页 > 数据库 > mysql教程 > 如何迭代 T-SQL 查询结果并为每一行执行存储过程?

如何迭代 T-SQL 查询结果并为每一行执行存储过程?

Linda Hamilton
发布: 2025-01-01 08:03:09
原创
872 人浏览过

How Can I Iterate Through T-SQL Query Results and Execute a Stored Procedure for Each Row?

T-SQL 循环查询结果

假设您有一个从表中检索 ID 列表的查询:

SELECT @id=table.id FROM table
登录后复制

然后您需要为每一行执行一个存储过程,传入 ID 和另一个value:

EXEC stored_proc @varName=@id, @otherVarName='test'
登录后复制

在 T-SQL 中,您可以使用 CURSOR 来完成此操作:

DECLARE @id INT
DECLARE @name NVARCHAR(100)
DECLARE @getid CURSOR

SET @getid = CURSOR FOR
SELECT table.id,
       table.name
FROM   table

OPEN @getid
FETCH NEXT
FROM @getid INTO @id, @name
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC stored_proc @varName=@id, @otherVarName='test', @varForName=@name
    FETCH NEXT
    FROM @getid INTO @id, @name
END

CLOSE @getid
DEALLOCATE @getid
登录后复制

在此脚本中:

  • 我们声明三个变量:@id (INT)、@name (NVARCHAR(100)) 和名为的 CURSOR @getid。
  • 我们将 @getid 设置为一个 CURSOR,它从表 table 中选择 ID 和名称列。
  • 我们打开 CURSOR,获取第一行,并将结果存储在 @ id 和 @name。
  • 我们进入一个 WHILE 循环,只要 @@FETCH_STATUS 值为 0(表明已成功获取一行)。
  • 在循环内,我们执行存储过程,传入@id、@otherVarName 参数的文字值“test”以及@varForName 参数的获取名称值.
  • 我们获取下一行并将结果存储在 @id 和 @name 中。
  • 当没有更多行可以读取时fetch 后,我们关闭并释放 CURSOR。

此脚本允许您循环查询结果并为每一行执行存储过程,根据查询中的数据更新变量名称和值.

以上是如何迭代 T-SQL 查询结果并为每一行执行存储过程?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板