declare @POID nvarchar(300)set @sqlstr='select @wmdate=min(wmdate),@departure=min(departure),@arrive=min(arrive),@CustomerDate=min(CustomerDate) from POMainPre where POID IN ( ' + @POIDS + ')'这里@POIDS的内容是:'1002','1003'
我也试过把@POIDS的内容改为:''1002'',''1003''
但是奇怪的是,在查询调试器里,直接赋值的话,是正常的,即会出现......( '1002','1003')
正常参数传入时,发现无论怎么搞,都会变成......( '1002','1003'
很奇怪,右括号不见了。
有哪位大哥大姐知道为什么吗?

解决方案 »

  1.   

    declare @POID nvarchar(4000) 
      

  2.   

    你这种情况得用输出参数形式吧SP_EXECUTESQL
      

  3.   

    declare @POID nvarchar(300) 
    SET @POID='''1002'',''1003''' PRINT @POID
    '1002','1003'
      

  4.   

    我也试过把@POIDS的内容改为:''1002'',''1003'' 
    -->
    '''1002'',''1003''' 
      

  5.   

     where  POID like ''' + @POIDS + ''' 
      

  6.   

     where  POID in ('''+'1002'+''', '''+'1003'+''') 
      

  7.   

    写法没有错
    是查询分析器的设置问题
    查询分析器-->工具-->选项-->结果页-->每列最多字符数(M)->设置成300或更多, 因为你的数据已经超过原设定的值, 被截断了
      

  8.   

    SP_EXECUTESQL 我用了,有时也用exec
    问题是我在执行前把sqlstr保存到数据库,发现拼接在变量后的字符不见了,实在没办法,我只能在参数传入前就把需要的东东给拼接上去,例如,原来传入是“‘1002’,’1003'",现在无奈只能传"( '1002','1003' )"
      

  9.   

    试试看是不是你的@sqlstr变量设置的长度太短。