如何从存储过程中将数据插入临时表,该存储过程返回两个选择查询数据

时间:2014-12-18 07:39:33

标签: tsql

我有一个存储过程,它将返回两组数据,没有任何条件,我想将返回的数据存储在两个临时表中。
这是一个例子:

CREATE PROCEDURE sp1 
    -- Add the parameters for the stored procedure here

AS
BEGIN
    --  ON added to prevent extra result sets from
    -- interfering with SELECT statements.       
    -- Insert statements for procedure here
    SELECT * FROM table1        
    SELECT * FROM table2
END
GO 

创建程序sp2

exec sp1 ---想将table1的结果存入temp1,将table2存入temp2

3 个答案:

答案 0 :(得分:0)

您可以按如下方式使用SELECT ... INTO:

SELECT * INTO #TempTable1 FROM Table1

答案 1 :(得分:0)

最简单的方法是SELECT INTO语句:

CREATE PROCEDURE procedureName
AS
SELECT * 
INTO #tempTable1
FROM Table1

SELECT * 
INTO #tempTable2
FROM Table2

如果有需要使用的参数,只需将它们放在各自表的WHERE子句中即可。

答案 2 :(得分:0)

对存储过程使用可选参数,使其一次只返回一个数据集。要正常返回所有数据集,只需在调用sproc时省略该参数。

CREATE PROCEDURE sp1 
    -- Add the parameters for the stored procedure here
    @ResultSet int = null
AS
BEGIN
    --  ON added to prevent extra result sets from
    -- interfering with SELECT statements.       
    -- Insert statements for procedure here
    if (@ResultSet is null or @ResultSet = 1)
        SELECT * FROM table1

    if (@ResultSet is null or @ResultSet = 2)
        SELECT * FROM table2
END
GO

这里的缺点当然是你的存储过程必须是幂等的,因为你必须多次调用它。