例如,我是一个 select 语句,它返回 1000 行。我需要为 select 语句返回的每一行执行一个特定的存储过程。
你知道我该怎么做吗?
最佳答案
在您的选择中构造 EXECUTE 语句,如下所示:
SELECT 'EXEC sp_whatever ' + parameter stuff
FROM your_table
然后运行结果!或者,将您的结果粘贴到电子表格包中,并使用字符串连接来构造 EXEC 语句 - 只需创建一个公式并将其粘贴到 1,000 行中。我个人更喜欢第一种方法。
为了澄清“参数的东西”,以一个存储过程为例,它需要两个
int
要从列中获取的参数 your_table
.然后你会有这样的东西:SELECT 'EXEC sp_whatever ' + CAST(field1 AS varchar) + ', ' + CAST(field2 AS varchar)
FROM your_table
这里不需要小心字符串字段 - 您冒着无意中将自己暴露于自己的 SQL 注入(inject)攻击的风险,就像任何 SQL 字符串连接一样。
我正在阅读您的“例如”作为“这是一次性任务”。如果这是一项需要自动化的任务,那么其他答案之一可能是正确的方法。
关于sql - 在 SELECT 语句中执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/715579/