这里现在有一个带参数的sql存储过程,返回一个结果集。我现在想把这个结果集保存在一个临时表里面。
由于结果集的属性很多,而且每个属性的数据类型要查起来也很繁琐。。所以实在不想先create临时表,在往里面插入。
想知道有没有类似select * into #temp from tablename这样的方法去实现
//bow~~~

解决方案 »

  1.   

    ------------------------------------ 
    -- Author:Flystone  
    -- Version:V1.001   
    -- Date:2008-08-01 12:39:33 
    ------------------------------------ -- Test Data: ta 
    If object_id('ta') is not null  
        Drop table ta 
    Go 
    Create table ta(bno int,bname nvarchar(5),editor nvarchar(5),bpub nvarchar(7),bdate numeric(5,1)) 
    Go 
    Insert into ta 
    select 1,'数据库原理','wang','gaojiao',2006.9 union all 
    select 2,'信息系统','liu','kexue',2006.8 union all 
    select 3,'数据库实例','wang','gaojiao',2006.9 union all 
    select 4,'数据库习题','zhang','jixie',2005.4  
    Go --create proc 
    create proc proc_a 
    @bno int 
    as 
    select * from ta where bno <= @bno 
    go 
    --Start 
    select *  into tmp1
    from OPENROWSET('SQLOLEDB','SERVER=.;UID=sa;PWD=','exec csdn_test.dbo.proc_a  2') AS a 
    select *   into tmp2
    from OPENROWSET('SQLOLEDB','.';'sa';'','exec csdn_test.dbo.proc_a  2') AS a select *   into tmp3
    from OPENROWSET('SQLOLEDB','DRIVER={SQL Server};SERVER=.;UID=sa;PWD=','exec csdn_test.dbo.proc_a  2') AS a 
    select * from tmp1
    select * from tmp2
    select * from tmp3
    --Drop proc 
    drop proc proc_a 
    drop table tmp1,tmp2,tmp3
    /*bno         bname editor bpub    bdate   
    ----------- ----- ------ ------- ------- 
    1           数据库原理 wang   gaojiao 2006.9
    2           信息系统  liu    kexue   2006.8(所影响的行数为 2 行)bno         bname editor bpub    bdate   
    ----------- ----- ------ ------- ------- 
    1           数据库原理 wang   gaojiao 2006.9
    2           信息系统  liu    kexue   2006.8(所影响的行数为 2 行)bno         bname editor bpub    bdate   
    ----------- ----- ------ ------- ------- 
    1           数据库原理 wang   gaojiao 2006.9
    2           信息系统  liu    kexue   2006.8(所影响的行数为 2 行)*/
      

  2.   

    原文参照:
    http://blog.csdn.net/happyflystone/archive/2008/08/01/2752936.aspx
      

  3.   

    恩,多谢了~写的很不错,再问个问题。。我那个SP的参数是字符不是数字
    EXEC My_sp 'B', 'A'
    这个有引号的问题该如何解决,谢谢~~
    select *  into tmp1
    from OPENROWSET('SQLOLEDB','SERVER=.;UID=sa;PWD=',这里该如何写呢??) AS a
      

  4.   


    有比如select * #temp from tb where 1=0这样就是创建一个表咯
      

  5.   

    在''里面 '''代表一个'''
    select *  into tmp1 
    from OPENROWSET('SQLOLEDB','SERVER=.;UID=sa;PWD=','exec csdn_test.dbo.proc_a  '''+'2'+'''') AS a
      

  6.   

    select * into # from openrowset('msdasql','....','exec db.dbo.proc') x