將SQL語句組合成一個字符串,用EXEC('SQL語句') 試一下

解决方案 »

  1.   

    --示例--被调用的存储过程
    create proc p_qry
    @tbname sysname,
    @fdname sysname
    as
    exec('select * from syscolumns where name='''+@fdname+''' and object_name(id)='''+@tbname+'''')
    go--动态调用上面的存储过程
    declare @存储过程名 sysname,@参数 nvarchar(4000)
    select @存储过程名='p_qry'
    ,@参数='@tbname=''sysobjects'',@fdname=''name'''exec('exec ['+@存储过程名+'] '+@参数)
    go--删除测试
    drop proc p_qry
      

  2.   

    declare @sql nvarchar(1000),@ int
    select @sql=N'select @1=count(*) from sysobjects'
    exec sp_executesql @sql, N'@1 int out',@ out
    select @
      

  3.   


    declare  @test  varchar(1000)  
    declare  @total  Integer  
    SET  @test=  '21,23,24,25,26,27'  
     
    EXEC  ('  
       declare  @count  Integer  
       select  @count=count(*)  from  NeiEntityContainmentTable  
       WHERE  myentitytype  in  ('  +  @test  +  ')')  
     
    我想將@count的結果返回到@total中,如何???  
     
     
     
    回答:  
     
    ---------------------------------------------------------------  
     
    declare  @test  Nvarchar(1000)  
    declare  @total  Int  
    declare  @sql  Nvarchar(1000)  
     
    SET  @test=  N'21,23,24,25,26,27'  
     
    set  @sql=N'  
       select  @count=count(*)  from  NeiEntityContainmentTable  
       WHERE  myentitytype  in  ('  +  @test  +  N')'  
     
    exec    sp_executesql    @sql,    N'@count    int  output',    @total    output    
    select @total