Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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_Stored Procedures - Fatal编程技术网

Sql 用基于集合的方法取代程序方法

Sql 用基于集合的方法取代程序方法,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个存储过程,它从SSIS包中多次调用,并使用不同的值作为参数。存储过程包含对SSRS多维数据集的开放查询,并返回人员列表。结果集存储在临时表中 CREATE TABLE #tmp (Person varchar(50), Cat1 bit, Cat2 bit, Cat3 bit, Cat4 bit, Cat5 bit) INSERT INTO #tmp EXEC sys.sp_executesql @query SET @sqlCommand = 'SELECT Person FROM

我有一个存储过程,它从SSIS包中多次调用,并使用不同的值作为参数。存储过程包含对SSRS多维数据集的开放查询,并返回人员列表。结果集存储在临时表中

CREATE TABLE #tmp (Person varchar(50), Cat1 bit, Cat2 bit, Cat3 bit, Cat4 bit, Cat5 bit)
INSERT INTO #tmp EXEC sys.sp_executesql @query

SET @sqlCommand = 'SELECT Person FROM #tmp WHERE ' + @Category + '= 1'
EXEC (@sqlCommand);
对于resultset中的每个人,应该有一个插入到另一个表中的信息。这些信息是人员的姓名、一些其他静态内容以及一个值,我可以从运行另一个存储过程中获取该值并计算返回的行数

插入的示例可以是

     Name        Static info      @@rowcount   
+-------------++--------------++--------------+
|Homer Simpson||Something here||ValueFromCount|
+-------------++--------------++--------------+
到目前为止,我有一个预写的存储过程,它将一行插入到所需的表中,但它有一个参数,即人名。我通过从当前SP执行另一个SP来获得@rowcount值,该SP有点嵌套,但工作正常

我可以很容易地为resultset中的每个人使用sqlwhile循环或游标,并调用insert SP,但我不禁想到必须有一种更有效的方法来实现这一点

现在的流量是

SSIS包执行返回人员列表的存储过程 对于列表中的每个人,执行SP_Insert_To_Table过程

2.1。在SP_Insert_To_Table过程中,执行SP_Get_All_操作并选择@@rowcount作为要插入的动态值

我的想法是,我可能能够将来自tmp表的结果与此人所做操作的计数连接起来,这样我就可以得到一个新的结果集,可以全部插入其中,但我无法计算出来,因为该计数对于列表中的每个人都是特定的


有没有一种方法可以以基于集合的方式来实现这一点,而不是使用程序化的方法?

没有任何细节来处理这一点是有点挑战性的,但显然,消除循环应该是非常简单的。我所能做的只是粗略的伪代码

Insert into SomeTable (ColumnsListedHere)
from SomeOtherTable
join Something on some conditions
where SomeCriteria = GetListOfPerson

是的,我显然想得太多了。我了解你的一些想法,我正在接近一个解决方案!