在存储过程中
DECLARE @SQL VARCHAR(5000)
DECLARE @SQL2 VARCHAR(5000)
set @sql='user_id=123'
select * from tab_user where +@sql   --这儿怎么写才是正确的.注意不能用set @sq2='select * from tab_user where '+@sql+''

解决方案 »

  1.   

    EXEC('select * from tab_user where '+@SQL);
      

  2.   

    exec('select * from tab_user where '+@sql)
      

  3.   

    exec('select * from tab_user where '+@sql)
      

  4.   


    exec('select * from tab_user where '+@sql)
      

  5.   

    DECLARE @SQL VARCHAR(5000) 
    DECLARE @SQL2 VARCHAR(5000) 
    set @sql='user_id=123' 
    exec('select * from tab_user where '+@sql)
      

  6.   

    code=SQL]
    DECLARE @SQL VARCHAR(5000) 
    DECLARE @SQL2 VARCHAR(5000) 
    set @sql='user_id=123' 
    exec('select * from tab_user where '+ @sql) 
    [/code]
      

  7.   

     
    DECLARE @SQL VARCHAR(5000) 
    DECLARE @SQL2 VARCHAR(5000) 
    set @sql='user_id=123' 
    exec('select * from tab_user where '+ @sql) 
      

  8.   

    欢迎加入我们的QQ群,大家共同学习,共同提高!程序员中的战斗机,QQ群号:84505938
      

  9.   


    DECLARE @SQL VARCHAR(5000) 
    DECLARE @SQL2 VARCHAR(5000) 
    set @sql='user_id=123' 
    exec(N'select * from tab_user where 1=1' +@sql)
      

  10.   

    非常谢谢大家,但是还是有个小问题
    exec('select 
     (case @anction when 1 then  corp_name  when 2 then pro_name when 3 then staff_name )  AS name
    from  tab_user where '+@sql)
    @anction 已申明,为什么还是会提示没有申明
      

  11.   


    exec('select 
    (case'+ @anction+' when 1 then  corp_name  when 2 then pro_name when 3 then staff_name )  AS name 
    from  tab_user where '+@sql) 
      

  12.   

    exec('select 
    (case '+ @anction+' when 1 then  corp_name  when 2 then pro_name when 3 then staff_name end)  AS name 
    from  tab_user where '+@sql) -->case前面要留空格.后面少了end ,补充.