存储过程里面有Select语句,查询出来一个表的数据,我能不能把它当作一个表来用?
例如:存储过程中sp_Test的语句是"select * from Table1"
能不把存储过程返回的结果当作一个表来用呢?
能不能"select*from sp_Test"
这么来用

解决方案 »

  1.   

    第一种方法: 把exec(@sql) 做成存储过程,再调用select * into t
    from openrowset('sqloledb','ip';'sa';'','set fmtonly off;exec 库名.dbo.存储过程(参数)')
    第二种方法:直接在exce()写插入语句exec('select * into 表名' +@sql)以前看别人写的,你测试下吧
      

  2.   

    不能用select 
    其实,在客户端用ado直接执行存储过程返回结束,与用select 返回结果是一样的 只不过存储过程返回的结果不能更新.对表插入语句 insert into
    可用insert into 表 exec 存储过程
    来插入记录
      

  3.   

    create table #Temp(...)
    insert into #Temp exec sp_Test
    select * from #Temp
      

  4.   

    不能。
    你可建个临时表,把查询的结果放到里面,再调用。
    --定义临时表@table
    declate @table table(id int,name varchar(10),add varchar(50))--把查询结果插入到临时表@table
    insert into @table (id,name,add)
    select id,name,add from  sp_Test
    --读取
    select * from @table 
      

  5.   


    --将存贮过程返回信息装入临时表的方法示例:
    use northwind--创建存贮过程
    create proc sp_test
    as
    select * from Customers--创建一个临时表,以便装入数据
    CREATE TABLE [#Temp] (
    [CustomerID] [nchar] (5),
    [CompanyName] [nvarchar] (40) ,
    [ContactName] [nvarchar] (30),
    [ContactTitle] [nvarchar] (30),
    [Address] [nvarchar] (60) ,
    [City] [nvarchar] (15) ,
    [Region] [nvarchar] (15) ,
    [PostalCode] [nvarchar] (10) ,
    [Country] [nvarchar] (15) ,
    [Phone] [nvarchar] (24) ,
    [Fax] [nvarchar] (24) 
    )--将存贮过程结果装入临时表
    insert into #Temp exec sp_Test--查看临时表
    select * from #Temp--删除临时表
    drop table #temp
      

  6.   

    不能,但你可以将 exec SP…… 返回的结果做为一个表来使用
      

  7.   

    但你可以将   exec   SP……   返回的结果做为一个表来使用
    --------------------
    select 语句并不支持呀.insert into 是可以支持这种用法的.