实在搞不明白了,我写的语句如下:CREATE  PROCEDURE test        
@参数A ,
@参数B 
AS 
DECLARE @sqltext char(1000)SET @sqltext = N'SELECT * FROM TABLE_1'
--省去相关判断语句
SET  @sqltext = @sqltext + N' WHERE TABLE_1.A = ' +  @参数A  ----这里得到的sqltext值还是N'SELECT * FROM TABLE_1'   
--省去相关判断语句
SET  @sqltext = @sqltext + N' AND TABLE_1.A = ' +  @参数B  ----这里也一样.我该怎么写呢?EXEC  (@sqltext) 就是简单的sql语句拼接,可就是不正确!

解决方案 »

  1.   

    DECLARE @sqltext char(1000)
    -->
    DECLARE @sqltext Nvarchar(1000)
    不要问原因
      

  2.   

    CREATE  PROCEDURE test        
    @paraA varchar(200),
    @paraB varchar(200) 
    AS 
    DECLARE @sqltext varchar(1000)  --将Char换做VarcharSET @sqltext = N'SELECT * FROM TABLE_1'
    --省去相关判断语句
    SET  @sqltext = @sqltext + N' WHERE TABLE_1.A = ' +  @paraA  ----这里得到的sqltext值还是N'SELECT * FROM TABLE_1'   
    --省去相关判断语句
    SET  @sqltext = @sqltext + N' AND TABLE_1.A = ' +  @paraB  ----这里也一样.我该怎么写呢?EXEC  (@sqltext)
      

  3.   

    CREATE  PROCEDURE test        
    @参数A varchar(80),
    @参数B varchar(80)
    AS 
    DECLARE @sqltext varchar(8000)SET @sqltext =  'SELECT * FROM TABLE_1'--省去相关判断语句
    SET  @sqltext = @sqltext +  ' WHERE TABLE_1.A = ''' +  @参数A+''''  ----这里得到的sqltext值还是N'SELECT * FROM TABLE_1'   
    --省去相关判断语句
    SET  @sqltext = @sqltext +  ' AND TABLE_1.A = ''' +  @参数B+''''   ----这里也一样.我该怎么写呢?EXEC  (@sqltext) 
    go
      

  4.   

    char(1000) --很明显是变量声明的问题,因为char是定长数据类型,执行以下SQL:SET @sqltext = N'SELECT * FROM TABLE_1'实际得到的数据是N'SELECT * FROM TABLE_1 ....' ,'...'是九百多个空格。
      

  5.   

    调试拼接而成的sql可以用print去输出sql,这样就好查明哪里有问题了。
      

  6.   

    终于看到SQL版的星星了,不知道你们有没有时间去看看这个。谢谢!!
    http://community.csdn.net/Expert/topic/5145/5145687.xml?temp=.7000238