declare @s varchar(120)set @s = 'select * ' +  ' from ' + left('sysobjects',10)exec (@s)

解决方案 »

  1.   

    declare @s varchar(200)
    set @s='select * from '+left('sysobjects',10)
    exec(@s) 
      

  2.   

    其实是这样的:表CW
    CREATE TABLE [dbo].[CW] (
    [Sessionid] [varchar] (7) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [A1] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [A2] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [A3] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [A4] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [A5] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [A6] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [A7] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [B1] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [B2] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [re] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    create  function f_getSeries()
    returns @T table (CountS INT,s char(7),A1 char(2),A2 char(2),A3 char(2),A4 char(2),A5 char(2),A6 char(2),B1 char(2),B2 char(2))
    AS
    begin
    declare @sql varchar(5000)
    declare @fldname as varchar(50)  
    --二个连号的情况
    declare C cursor for    
    select TOP 5 name from syscolumns where id=object_id('CW') AND name like 'A%'
    open C    
    fetch next from C into @fldname    
    while @@fetch_status=0      
     begin      
    set @sql='insert  @T(CountS,s,a1,a2,a3,a4,a5,a6,b1,b2) select 2 counts,sessionid, a1,a2,a3,a4,a5,a6,b1,b2 from cw where  cast('+ LEFT(@fldname,1)+ cast(CAST(RIGHT(@fldname,1) as INT)+1 as char(1)) +' as int)=cast(' +@fldname+ ' as int)+1 'exec (@sql)
     fetch next from  C into @fldname    
    end      
    close C    
    deallocate C    
     
    return
    end总是提示:在函数内不正确地使用了 'EXECUTE'。
      

  3.   

    函数不能用exec ,换procedure
      

  4.   

    procedure不能返回table,你可以用select语句来输出数据集,然后调用的时候插入表中使用
      

  5.   

    把字符串加起来再执行,用exec时,不能用left等任何函数做转换