我的存储过程在vb中执行时,提示如下错误“p附近有语法错误!”如果将pz_dj_date<='+@date2 部分隐掉,就不出错,为什末?请指教!!存储过程如下:
CREATE PROCEDURE  mm
@data char(100),
@area char(10),
@date1 char(20),
@date2 char(20),
@nian  int
as
declare
    @sql varchar (200)
set @sql='select *  FROM '+@data+'..p_zl_zhenliao where a_code =' +@area+'  and pz_dj_date>='+@date1+'  and pz_dj_date<='+@date2
EXECUTE (@sql)
GO

解决方案 »

  1.   

    SQL语句中有单引号,有时就会报错。
      

  2.   

    @sql varchar (200)
    set @sql='select *  FROM '+@data+'..p_zl_zhenliao where a_code =' +@area+'  and pz_dj_date>='+@date1+'  and pz_dj_date<='+@date2最后面少了单引号“‘”
      

  3.   

    pz_dj_date<='+@date2
    改为:
    pz_dj_date<='+ @date2 +''
      

  4.   

    1、改为 pz_dj_date<='+ @date2 +'' 之后,还是报错。
    2、加"'"后改为set @sql='select *  FROM '+@data+'..p_zl_zhenliao where a_code =' +@area+'  and pz_dj_date>=''+@date1+''  and pz_dj_date<=''+@date2+'''还是提示错误。
    到底错误出在何处,请指教!
    我主要想用变量data传递数据库的名称,所以将sql语句写成这样。如果写成如下:
    select *  FROM  st..p_zl_zhenliao where pz_dj_date<=  @date1 and pz_dj_date>=   @date2  and  a_code =@area  
    然后执行mm而不是执行@sql 就不会报错,但是数据库的名称固定为st,不能动态变,
    如果这样写,如何让数据库名称动态变化?请赐教!!!