sql - 将存储过程的结果附加到先前执行的存储过程

标签 sql sql-server sql-server-2005

我有一个存储过程,它采用包含单个值的单个参数。 我想将一组值一个一个地传递给过程,并将合并的结果放入一个表中。这可能吗?

目前我正在使用游标在循环中执行过程,但只能获得传递集合中第一个值的结果。

declare @clientid varchar(10)

create table #tmpp(secid varchar(10))
insert into #tmpp values(2319)
insert into #tmpp values(2855)
insert into #tmpp values(1303)


    declare cur CURSOR LOCAL for
        select secid from #tmpp 

    open cur

    fetch next from cur into @seclientid

    while @@FETCH_STATUS = 0 BEGIN



    exec getReportforclient @clientid
        fetch next from cur into @clientid
    END

    close cur
    deallocate cur
    drop table #tmpp

如果这太模糊/不清楚/愚蠢,有人可以给我一个替代方案吗? 非常感谢任何帮助。谢谢。

最佳答案

可能有一种不使用游标的方法,但如果不查看您的存储过程,我们对此无能为力。您可以创建一个与 sp 结果具有相同结构的表(临时的或非临时的),并将结果插入其中。像这样:

DECLARE @clientid VARCHAR(10)

CREATE TABLE #tmpp(secid VARCHAR(10))
INSERT INTO #tmpp VALUES(2319)
INSERT INTO #tmpp VALUES(2855)
INSERT INTO #tmpp VALUES(1303)


CREATE TABLE #Results(col1 INT, col2.... -- create the table that will hold your 
                                         -- results

DECLARE cur CURSOR LOCAL for
SELECT secid 
FROM #tmpp 

OPEN cur
FETCH NEXT FROM cur INTO @seclientid
WHILE @@FETCH_STATUS = 0 
BEGIN
    INSERT INTO #Results
    exec getReportforclient @clientid

    FETCH NEXT FROM cur INTO @clientid
END

CLOSE cur
DEALLOCATE cur
DROP TABLE #tmpp

SELECT *
FROM #Results

关于sql - 将存储过程的结果附加到先前执行的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14522351/

相关文章:

SQL Server 2008 : I/O Wait Time per Database File

c# - 我应该如何研究 'rotate'或 'flatten'这个数据? PIVOT、自连接还是其他?

sql-server - SQL Server 2005/2008 - 多个文件组?

mysql - GTFS 获得旅行的最后一站

java - 在搜索栏中使用单引号

sql - 从同一台服务器上另一个数据库的备份创建新数据库?

sql-server - 类似 SQL 的表达式找不到半空格字符(零宽度非连接符 (ZWNJ))

c# - 如何将 EF 生成的 SQL 查询追溯到创建它的代码

sql - 如何在 SQL Server 2005 中更新 View

c# - 高性能数据插入 SQL Server