IF OBJECT_ID('test') IS NOT  NULL 
  DROP TABLE test
CREATE TABLE test
(
   id int IDENTITY(1,1)   NOT NULL , 
   NAME VARCHAR(10) NOT null
)
INSERT  test(NAME) VALUES('zhangsan')
INSERT  test(NAME) VALUES('lisi')
INSERT  test(NAME) VALUES('zhaliu')
INSERT  test(NAME) VALUES('wangwu')DECLARE @sql VARCHAR(50)
SET @sql = 'SELECT  * FROM test  '
  SELECT * FROM EXEC(@sql)   --错误
--请教大家这里应该如何 将exec动态传入的Sql语句执行后返回的表格 查询出来。

解决方案 »

  1.   

     我这里想要对 Exec(@Sql)
      返回的数据集 进行操作,
      所以需要 再select下。
      永生,你QQ号或邮箱多少,我遇到问题了请教你。谢谢
      

  2.   

    1、exec (@sql)
    2、A、建表 tb
       B、insert into tb exec(@sql)
      

  3.   


    1、exec (@sql)
    2、A、建表 tb
       B、insert into tb exec(@sql)
      

  4.   


    老黎,
       你这样 insert into tb exec(@sql)
       是不可以的,你可以试一下。
      

  5.   


    exec ('insert into tb ' + @sql)
      

  6.   

    IF OBJECT_ID('test') IS NOT  NULL 
      DROP TABLE test
    CREATE TABLE test
    (
       id int IDENTITY(1,1)   NOT NULL , 
       NAME VARCHAR(10) NOT null
    )
    INSERT  test(NAME) VALUES('zhangsan')
    INSERT  test(NAME) VALUES('lisi')
    INSERT  test(NAME) VALUES('zhaliu')
    INSERT  test(NAME) VALUES('wangwu')DECLARE @sql VARCHAR(50)
    SET @sql = 'SELECT  * FROM test  '
    if object_id('tempdb..#t')is not null drop table #t
    select * into #t from test where 1=0
    set identity_insert #t on
    insert #t (id,name) EXEC(@sql)   --错误
    select * from #t/*(所影响的行数为 1 行)
    (所影响的行数为 1 行)
    (所影响的行数为 1 行)
    (所影响的行数为 1 行)
    (所影响的行数为 0 行)
    (所影响的行数为 4 行)id          NAME       
    ----------- ---------- 
    1           zhangsan
    2           lisi
    3           zhaliu
    4           wangwu(所影响的行数为 4 行)*/
      

  7.   

    IF OBJECT_ID('test') IS NOT  NULL 
      DROP TABLE test
    CREATE TABLE test
    (
       id int IDENTITY(1,1)   NOT NULL , 
       NAME VARCHAR(10) NOT null
    )
    INSERT  test(NAME) VALUES('zhangsan')
    INSERT  test(NAME) VALUES('lisi')
    INSERT  test(NAME) VALUES('zhaliu')
    INSERT  test(NAME) VALUES('wangwu')IF OBJECT_ID('aa') IS NOT  NULL 
      DROP TABLE aaDECLARE @sql VARCHAR(50)
    SET @sql = 'SELECT  * into aa FROM test  '
     EXEC(@sql)   --错误
    --请教大家这里应该如何 将exec动态传入的Sql语句执行后返回的表格 查询出来。
    select * from aa(1 行受影响)(1 行受影响)(1 行受影响)(1 行受影响)(4 行受影响)
    id          NAME
    ----------- ----------
    1           zhangsan
    2           lisi
    3           zhaliu
    4           wangwu(4 行受影响)
      

  8.   

    please learn from 永生 and 老黎
      

  9.   

    IF OBJECT_ID('test') IS NOT  NULL 
      DROP TABLE test
    go
    CREATE TABLE test
    (
       id int IDENTITY(1,1)   NOT NULL , 
       NAME VARCHAR(10) NOT null
    )
    INSERT  test(NAME) VALUES('zhangsan')
    INSERT  test(NAME) VALUES('lisi')
    INSERT  test(NAME) VALUES('zhaliu')
    INSERT  test(NAME) VALUES('wangwu')DECLARE @sql VARCHAR(50)
    SET @sql = 'SELECT  * FROM test  '
    --exec (@sql)
    insert into 表 select * from openrowset( 'SQLOLEDB', '192.168.0.87'; 'sa'; '6745300',' exec ('+@sql+')')
      

  10.   


    方法一(永生):
       创建临时表,将现有表的结构复制给临时表(select * into #t from test where 1=0)
        INSERT 和 Exec 结合
    方法二(老黎,wqmgxj)
          在 EEXEC中 执行(inseIN,或select into INTO
    方法三: (zywcy100)
      OPENROWSET   不过zywcy100 ,这里 select * from openrowset( 'SQLOLEDB', '192.168.0.87'; 'sa'; '6745300',' exec ('+@sql+')')
     是有问题的,请帮忙解决