如何提供值从表中存储过程?(How to supply values to sproc from t

2019-10-17 13:07发布

我需要从表中插入值到一个存储过程。 例如:

exec mysproc @param1='col1', @param2='col2'

这可以使用光标来完成,但有一些方法通过一系列操作来做到这一点?

Answer 1:

这是不可能以调用存储过程作为一个“置位操作”的一部分。 也许,对于其原因是,存储过程可能有任意的副作用,像修改数据,发送额外的结果集(!),或者关闭服务器。

光标是规范的方法来此。 (唉。)

你可以修改存储过程采取TVP,当然。 不知道这是可行的为您服务。



Answer 2:

我想,你所选择的方法将基于你有可用的时间量,这是很难说的这些方法是最不与所述逻辑更亲密的耗时。

有几个办法解决这个问题。

  1. 正如罗伯特·哈维已经提到,你也许应该看看,也许修改PROC接受的表值参数(如果使用的是SQL Server 2008中向上)。 如果没有,你可以创建在“解码”的proc中有一个表中的标量XML参数。
  2. 填写您的“参数数据”和ROW_NUMBER(一#table),并使用循环调用每一行的PROC在#table。
  3. 创建类型FAST_FORWARD的游标(我讨厌给CURSOR意见),并反复调用的程序。
  4. 动态SQL; 使用EXEC或优选sp_executesql的建立一个SQL命令字符串。
  5. 我的看法是,一等奖将重新设计PROC接受参数过滤器。 怎么回事,该数据集要创建参数从一个过滤查询结果的假设:
SELECT Moo, Meow
FROM Woof
WHERE Fu = @ParmX 
AND Bar = @ParmY

您PROC应该被称为@ParmX, @ParmY和逻辑里面就会那么一套基于的方式进行。



文章来源: How to supply values to sproc from table?