create or replace function 
...
is 
lv  number(3) ; -- varchar(100);
begin
  select fld1 into lv from tbl where fld2 = '003';
  insert into tbl2 (fld,...) values(lv,...);
  update tbl3 set fld3 = lv;
  commit;
  ...
end;

解决方案 »

  1.   

    sql > exec U_function;
      

  2.   

    create or replace function F_COM_GETDAY(P_FUND_CODE VARCHAR2,
                                            P_DAY  VARCHAR2,
                                            P_FEED INTEGER) return varchar2 is
      v_date date;                                  --临时日期变量
      V_CLOSE_DATE PAR_CLOSE_DATE.CLOSE_DATE%TYPE;  --非交易日期
      v_direct integer; --- 正负方向,取上N个交易日还是下N个交易日
      v_tims   integer; --- 计数器
      v_flag   integer; --- 记录数
    begin
       --1、取求交易日的方向
      begin
        Select count(*)
          into v_flag
          from PAR_CLOSE_DATE
         where FUND_CODE = P_FUND_CODE;
        if  v_flag=0 then
           return(-1);
        end if;
      end;调用
    select  F_COM_GETDAY('0101001','20031201',1) into v_day from dual;
      

  3.   

    ORA-14551: 无法在查询中执行 DML 操作
    ORA-06512: 在"USERBIMSHR.REFRESHWT_PERSONAL", line 50
    ORA-06512: 在line 1
    ORA-06512: 在line 3我一使用INSERT在SQL PLUS 中就报上面的错!
      

  4.   

    是函数:
    (HRID in varchar2,YourDate in varchar2)
    return varchar2
    as
         
    begin
         insert into Userbimshr.tempstr (tempstr) values ('dfsf');
         commit;              
         return 'aaaa';
    end;