declare @strnd as int ,@strjd as char(20)
set @strjd='(jd=1 or jd=2)'
select jsdm,jd from jh where @strjd
为何提示@strjd' 附近有语法错误。

解决方案 »

  1.   

    where @strjd='********'吧
     条件之后没有东西怎么行?不知道对不对 没用过sql
      

  2.   

    set @strjd='jd=1 or jd=2 '
      

  3.   

    执行存储过程有错: 试试楼上的set @strjd='jd=1 or jd=2 '
      

  4.   


    declare @strnd as int ,@strjd as char(20)
    set @strjd='(jd=1 or jd=2)'觉得这就错了影响后面的select
      

  5.   

    存储过程中WHERE后面的参数不能是那样的表达式。只能将两个参数代表两个值,应改为这样:
    declare @strnd as int ,@strjd as char(20),@parm1 as int,@parm2 as int
    /*set @strjd='(jd=1 or jd=2)'*/
    set @parm1=1
    set @parm2=2
    select jsdm,jd from jh where jd=@parm1 or jd=@parm2
      

  6.   

    这是动态绑定问题,不能这样用啊!!!
    修改为:
    declare @strjd as char(20),@strSql as varchar(4000)
    set @strjd='(jd=1 or jd=2)'
    select @strSql ='select jsdm,jd from jh where '+@strSql 
    execute(@strSql)
      

  7.   

    楼主,试试这个
    declare @strnd as int ,@strjd as char(20),@sqlstr varchar(200)select @sqlstr='select jsdm,jd from jh where @strjd'
    exec sp_executesql @sqlstr,N'@strjd char(20) ,@strjd='(jd=1 or jd=2)'
      

  8.   

    必须用动态exec来执行!declare @strnd as int ,@strjd as char(20)
    set @strjd='(jd=1 or jd=2)'
    exec ('select jsdm,jd from jh where'+ @strjd)
      

  9.   

    --看我的:
    declare @strnd as int ,@strjd as char(20)
    set @strjd='(jd=1 or jd=2)'
    set @strjd='select jsdm,jd from jh where '+@strjdexec sp_executesql @strjd
      

  10.   

    where @strjd='********'吧
     条件之后没有东西怎么行
      

  11.   

    declare @strnd int ,@strjd char(20)
    set @strjd='(jd=1 or jd=2)'
    Exec('select jsdm,jd from jh where ' + @strjd)