我有一个存储过程,它将返回两组数据,没有任何条件,我想将返回的数据存储在两个临时表中。
这是一个例子:
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
答案 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
这里的缺点当然是你的存储过程必须是幂等的,因为你必须多次调用它。