@FSQL这段信息加到下面SQL语句的Where条件之后去执行难道不是直接加//// select * from table where 字段2='0014' AND 字段3 in ('A001','D001')  ???

解决方案 »

  1.   

    Set @FSQL=AND (字段2='0014') AND (字段3 in ('A001','D001')) 
    EXEC ABC 20090316,20090415,AND (字段2='0014') AND (字段3 in ('A001','D001'))    为什么都不加引号呢,这样能执行?
      

  2.   

    CREATE PROCEDURE  ABC  
    @QYMD  char(8),
    @ZYMD  char(8),
    @FSQL  Nvarchar(4000) 
    AS 
    EXEC( 'SELECT *  
    FROM 表 
    WHERE 字段1 BETWEEN '+ @QYMD+' AND '+@ZYMD+ @FSQL)
    GO
    Declare @QYMD char(8), @ZYMD char(8), @FSQL  varchar(4000) 
    Set @QYMD=20090316 
    Set @ZYMD=20090415 
    Set @FSQL='AND (字段2=''0014'') AND (字段3 in (''A001'',''D001''))' 
    EXEC ABC @QYMD,@ZYMD,@FSQL
      

  3.   

    事实上我是想写程序来执行这段SQL,所以条件是变化的
      

  4.   

    --这样。
    CREATE PROCEDURE  ABC  @QYMD  char(8),@ZYMD  char(8),@FSQL  Nvarchar(4000) AS 
    declare @sql nvarchar(4000)
    set @sql='SELECT *  FROM 表 WHERE (字段1 BETWEEN '''+@QYMD+''' AND '''+@ZYMD+''')' + @FSQL
    exec (@sql)
    GO
    EXEC ABC '20090316','20090415','AND (字段2=''0014'') AND (字段3 in (''A001'',''D001''))'