在oracle中定义了一个存储过程,其中有一个参数为date类型,如下
create or replace procedure charu_lsjl
(
wdid in varchar2,
xxxh in varchar2,
ygxh in varchar2,
wdmj in varchar2,
bmqx in date   --这个字段在数据库中就是日期类型的
)is
v_exe_query varchar(1000);
begin
v_exe_query:='insert into osis_fwcl_b_lsjl (wdid,xxxh,ygxh,wdmj,bmqx) values ('||wdid||','||xxxh||','||ygxh||','||wdmj||','||bmqx||')';
execute immediate v_exe_query;
commit;
end charu_lsjl;
创建这个存储过程之后,对其进行test,总是在传递bmqx参数处,出问题,请问,对日期类型的参数进行处理是不是有特殊的办法

解决方案 »

  1.   

    传的参数必须是日期型,用sysdate或者to_date('20070101','yyyymmdd')之类应该可以
      

  2.   

    create   or   replace   procedure   charu_lsjl 

    wdid   in   varchar2, 
    xxxh   in   varchar2, 
    ygxh   in   varchar2, 
    wdmj   in   varchar2, 
    bmqx   in   date       --这个字段在数据库中就是日期类型的 
    )is 
    v_exe_query   varchar(1000); 
    begin 
    v_exe_query:= 'insert   into   osis_fwcl_b_lsjl   (wdid,xxxh,ygxh,wdmj,bmqx)   values   (:v1,:v2,:v3,:v4,:v5)'; 
    execute   immediate   v_exe_query USING wdid,xxxh,ygxh,wdmj,bmqx;
    commit; 
    end   charu_lsjl类似这样