如何将数据从存储过程获取到临时表中?
时间:2020-03-06 15:03:56 来源:igfitidea点击:
我正在使用sybase ASE15. 正在寻找类似的东西
Select * into #tmp exec my_stp;
my_stp返回10个数据行,每行两列。
解决方案
不确定Sybase,但是在SQL Server中应该可以进行以下操作:
插入#tmp(col1,col2,col3 ...)exec my_stp
在Sybase SQL Anywhere中,
INSERT INTO #tmp (col1,col2,col3...) select * from my_stp()
我相信在ASE 15中可以使用函数,但是它们对多行数据集无济于事。
如果我们存储的proc返回带有"从某处选择col1,col2"的数据,则无法获取该数据,它只会流回到客户端。
我们可以做的是将数据直接插入到临时表中。这可能有点棘手,就像我们在sproc中创建临时表一样,一旦sproc完成运行并且我们看不到其内容,就会将其删除。技巧是在存储过程之外创建临时表,但要从存储过程中引用它。这里的难点是,每次重新创建存储过程时,都必须创建临时表,否则会出现"找不到表"错误。
--You must use this whole script to recreate the sproc create table #mine (col1 varchar(3), col2 varchar(3)) go create procedure my_stp as insert into #mine values("aaa","aaa") insert into #mine values("bbb","bbb") insert into #mine values("ccc","ccc") insert into #mine values("ccc","ccc") go drop table #mine go
运行代码:
create table #mine (col1 varchar(3), col2 varchar(3)) go exec my_stp go select * from #mine drop table #mine go