--函数包头
create or replace package fun_package as
  function insert_func(
    model varchar2,
    displacement number,
    price number,
    factoryyear date,
    carid in varchar2
  ) return number;
end fun_package;
--函数包体
create or replace package body fun_package as
  function insert_func(
    model varchar2,
    displacement number,
    price number,
    factoryyear date,
    carid in varchar2
  ) return number is 
  begin
    insert into store_car values(model,displacement,price,factoryyear,carid);
    v_count:=sql%rowcount;
    return v_count;
  end insert_func;
end fun_package;
--测试
declare
  v_count number;
begin
  v_count:=fun_package.insert_func('MM',2.0,20000,'01-1月 01','豫AG3333');
  dbms_output.put_line(v_count);
end;
在包中声明函数如何使用,不知道...这个出错了

解决方案 »

  1.   


    --一般使用过程做
    SQL> create table t(col_1 number(10),col_2 date,col_3 varchar2(10));
     
    Table created
    SQL> create or replace package pkg_data as
      2         procedure pro_insert(
      3         v1 in t.col_1%type,v2 in t.col_2%type,v3 in t.col_3%type);--这里使用变量类型的栓钉
      4  end pkg_data;
      5  /Package created
    SQL> create or replace package body pkg_data as
      2         procedure pro_insert(
      3         v1 in t.col_1%type,v2 in t.col_2%type,v3 in t.col_3%type)
      4         as
      5         begin
      6              insert into t(col_1,col_2,col_3) values(v1,v2,v3);
      7              dbms_output.put_line('添加了 '||sql%rowcount||' 条数据');--使用隐式游标
      8         end pro_insert;
      9  end pkg_data;
     10  /Package body created
    SQL> alter table t modify col_3 varchar2(20 char);
    --当你该动数据类型的时候,procedure里面的参数会自动的修改
    Table altered
     
    SQL> exec pkg_data.pro_insert(10086,to_date('2011-07-04','yyyy-mm-dd'),'充了50元话费');
     
    添加了 1 条数据
     
    PL/SQL procedure successfully completed
     
    SQL> SQL> select * from t;
     
          COL_1 COL_2       COL_3
    ----------- ----------- ----------------------------------------
          10086 2011-07-04  充了50元话费
      

  2.   

    '01-1月 01'
    这个加个to_date转换一下吧!