为何我的存储过程这样写(如下),查不出记录,明明库里有符合条件的记录:CREATE PROCEDURE  jie_deng222
@data char(50),
@area char(10),
@date1 char(20),
--@date2 char(20),
@nian  char(4)  
as
declare
    @sql as varchar (600)
set @sql='select pz_tj,pz_zhenduan,pz_leibie, pz_zl_type from '+@data+'..p_zl_zhenliao a,'+@data+'..p_ziliao b where a.j_code=b.j_code and a.a_code ='+ @area +' and a.pz_add_date>='+@date1+' and  a.year='+@nian +' and a.pz_add_date<='+@date2
                
EXECUTE (@sql)
GO
但是去掉后边的   +'and a.pz_add_date<='+@date2 而只用 a.pz_add_date>='+@date1就能出记录!!为什末?要想两个条件都用,如何写!?
那位高手帮帮忙!30分相送!!

解决方案 »

  1.   

    and a.pz_add_date<='+@date2
    改成:
    and a.pz_add_date<='+ @date2 + "'"
      

  2.   

    可能是没有符合条件的记录吧??你直接用语句看是否可以得到(等价的语句)
    在调用执行exec(@sql)前,看看@sql的实际值
      

  3.   

    库里有记录,直接用sql语句能查出来,但是调用存储过程(加上  +'and a.pz_add_date<='+@date2 这个条件)就查不出来!请帮忙!!
      

  4.   

    在查询分析器中给变量付上具体的值,用等价的sql语句能查出来,
      

  5.   

    受yoki(小马哥)启发,已经自己解决,贴出来给大家看看:CREATE PROCEDURE jie_deng
    @data char(60),
    @area char(10),
    @date1 char(20),
    @date2 char(20),
    @nian  char(4)  
    as
    declare
        @sql as varchar (600)

     set @sql='select pz_tj,pz_zhenduan,pz_leibie,pz_zl_type  from '+@data+'..p_zl_zhenliao  a,'+ @data +'..p_ziliao  b  where a.j_code=b.j_code and a.a_code =' +@area+'  and a.pz_add_date>='''+@date1+''' and  a.pz_add_date<='''+@date2+''' and a.year='+ @nian 
    EXECUTE (@sql)
    GO
    就行了!!
    谢谢各位参与,马上结分!!