我在oracle中写一个带参数的插入的存储过程。其中有日期型的字段。但是日期型的参数为什么总是出错呀?存储过程如下
procedure addfinance_item
(f_itemid finance_item.itemid%type,
 f_typeid finance_item.typeid%type,
 f_typename finance_item.typename%type,
 f_ftypeid finance_item.ftypeid%type,
 f_ftypename  finance_item.ftypename%type,
 f_endtag finance_item.endtag%type,
 f_registdate finance_item.registdate%type,
 f_enddate finance_item.enddate%type)is
 iCount integer:=0;
 begin
    select count(*) into iCount from finance_item where itemid=f_itemid;
    if iCount=0 then
        insert into finance_item values(f_itemid,f_typeid,f_typename,f_ftypeid,f_ftypename,
                f_endtag,to_date(f_registdate,'yyyy-mm-dd'),to_date(f_enddate,'yyyy-mm-dd'));    
    else
        update finance_item set typeid=f_typeid where itemid=f_itemid;
    end if;
    if SQL%Found then
        commit;
    end if;
 end addfinance_item;

解决方案 »

  1.   

    把列名列表加上:insert into finance_item(itemid,typeid,typename,ftypeid,ftypename,endtag,registdate,enddate)
    values(f_itemid,f_typeid,f_typename,f_ftypeid,f_ftypename,f_endtag,to_date(f_registdate,'yyyy-mm-dd'),to_date(f_enddate,'yyyy-mm-dd'));
      

  2.   

    to_date(f_enddate,'yyyy-mm-dd')); TO_DATE(trans_date, 'DD-MON-YYYY'));
      

  3.   

    是否是调用的时候
    f_registdate finance_item.registdate%type,
     f_enddate finance_item.enddate%type
    这两个参数的输入有问题
      

  4.   

    用 %type使参数类型和字段类型一致,就不须要to_date转换了