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



>我有一个存储过程,它将无条件地返回两组数据,我想将返回的数据存储在两个临时表中。
下面是一个示例:

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

执行 SP1 ---想要将表 1 的结果存储到 temp1 中,将表 2 存储到 temp2 中

您可以使用

SELECT ...INTO如下:

SELECT * INTO #TempTable1 FROM Table1

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

CREATE PROCEDURE procedureName
AS
SELECT * 
INTO #tempTable1
FROM Table1
SELECT * 
INTO #tempTable2
FROM Table2

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

对存储的过程使用可选参数,使其一次只返回一个数据集。要正常返回所有数据集,只需在调用 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

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

最新更新