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 对一组值执行过程_Sql_Sql Server 2008_Tsql_Stored Procedures - Fatal编程技术网

Sql 对一组值执行过程

Sql 对一组值执行过程,sql,sql-server-2008,tsql,stored-procedures,Sql,Sql Server 2008,Tsql,Stored Procedures,我有一个存储过程,它从一个表(有大约900个条目)的ID列中获取值作为输入来执行所需的操作。是否有一种简单的方法可以通过SQL语句(类似于SQL中不存在的for循环)为ID列的所有值执行存储过程 谢谢你的提示 梅尔文感谢马丁 我选择光标版本,它的运行速度足够快: DECLARE @ProID int DECLARE position_cursor CURSOR FOR SELECT ProID FROM MyTable OPEN position_cursor FETCH NEXT FR

我有一个存储过程,它从一个表(有大约900个条目)的ID列中获取值作为输入来执行所需的操作。是否有一种简单的方法可以通过SQL语句(类似于SQL中不存在的for循环)为ID列的所有值执行存储过程

谢谢你的提示

梅尔文

感谢马丁

我选择光标版本,它的运行速度足够快:

DECLARE @ProID int
DECLARE position_cursor CURSOR
    FOR SELECT ProID FROM MyTable
OPEN position_cursor
FETCH NEXT FROM position_cursor INTO @ProID

WHILE @@FETCH_STATUS = 0
BEGIN
   exec MyProcedure @ProID
   FETCH NEXT FROM position_cursor INTO @ProID
END
CLOSE position_cursor
DEALLOCATE position_cursor

询问代码的问题必须证明已尝试过。向我们展示您当前的代码和您尝试过的内容。您可以使用游标或
WHILE
循环,但最好重写存储过程以接受TVP并以基于集合的方式处理它。由于您将不得不运行您的进程900次,因此我建议您不要使用循环或游标;您可以使用性能更好的SSI。