CREATE OR REPLACE PROCEDURE ufanyi_TESTsa (
  p_id IN  varchar2,
  p_name in VARCHAR2,
  
   p_msg             OUT      VARCHAR2,
   m_casenum         IN       VARCHAR2,                      
   m_grant_unit      IN       VARCHAR2                    

AS
    cursor fmd is  /**游标的语法对了吗**/
      select  CAPT_ORGION,FISCAL,FIS_PERD,PAY_DATE,BG_DEPTCODE,B_ACC_CODE,OUTLAY_CODE,BI_SUM from uf_gkgz  where B_ACC_CODE like p_name;    v_CAPT_ORGION  VARCHAR2(20),
    v_FISCAL      VARCHAR2(10),
    v_FIS_PERD    VARCHAR2(20),
    v_PAY_DATE    VARCHAR2(20),
    v_BG_DEPTCODE VARCHAR2(20),
    v_B_ACC_CODE  VARCHAR2(20),
    v_OUTLAY_CODE VARCHAR2(20),
    v_BI_SUM      NUMBER(18,2)BEGIN      open fmd; 
      fetch fmd into v_CAPT_ORGION,v_FISCAL,v_FIS_PERD,v_PAY_DATE,v_BG_DEPTCODE,v_B_ACC_CODE,v_OUTLAY_CODE,v_BI_SUM
      while fmd%found /**** 重复地插入 这个的语法有吗   *****/
      loop 
       insert into uf_fmd(CAPT_ORGION,FISCAL,FIS_PERD,PAY_DATE,BG_DEPTCODE,B_ACC_CODE,OUTLAY_CODE,BI_SUM)values(v_CAPT_ORGION,v_FISCAL,v_FIS_PERD,v_PAY_DATE,v_BG_DEPTCODE,v_B_ACC_CODE,v_OUTLAY_CODE,v_BI_SUM);
       fetch fmd into v_CAPT_ORGION,v_FISCAL,v_FIS_PERD,v_PAY_DATE,v_BG_DEPTCODE,v_B_ACC_CODE,v_OUTLAY_CODE,v_BI_SUM
 
      end loop; 
      close fmd;END ufanyi_TESTsa;

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE ufanyi_TESTsa (
      p_id IN  varchar2,
      p_name in VARCHAR2,
      p_msg             OUT      VARCHAR2,
      m_casenum         IN       VARCHAR2,                      
      m_grant_unit      IN       VARCHAR2                    
    ) AS 
       
      CAPT_ORGION  VARCHAR2(20);
      FISCAL      VARCHAR2(10);
      FIS_PERD    VARCHAR2(20);
      PAY_DATE    VARCHAR2(20);
      BG_DEPTCODE VARCHAR2(20);
      B_ACC_CODE  VARCHAR2(20);
      OUTLAY_CODE VARCHAR2(20);
      BI_SUM      NUMBER(18,2);
      cursor fmd is  /**游标的语法对了吗**/
          select  CAPT_ORGION,FISCAL,FIS_PERD,PAY_DATE,BG_DEPTCODE,B_ACC_CODE,OUTLAY_CODE,BI_SUM from uf_gkgz  where B_ACC_CODE like p_name;
      begin 
         open fmd; 
          loop 
          fetch fmd into CAPT_ORGION,FISCAL,FIS_PERD,PAY_DATE,BG_DEPTCODE,B_ACC_CODE,OUTLAY_CODE,BI_SUM;
          exit when fmd%notfound;
          insert into uf_fmd(CAPT_ORGION,FISCAL,FIS_PERD,PAY_DATE,BG_DEPTCODE,B_ACC_CODE,OUTLAY_CODE,BI_SUM)values(CAPT_ORGION,FISCAL,FIS_PERD,PAY_DATE,BG_DEPTCODE,B_ACC_CODE,OUTLAY_CODE,BI_SUM);
          end loop; 
          close fmd;
    END;
      

  2.   

    REM delete.sql
    REM Version 1.0, last updated 8/5/97
    REM This block illustrates the DELETE collection method, as described in
    REM Chapter 12 of _Oracle8 PL/SQL Programming_ by Scott Urman.SET serveroutput on
    DECLARE
      -- Initialize a table to 10 elements.
      v_Numbers NumTab := NumTab(10, 20, 30, 40, 50, 60, 70, 80, 90, 100);  -- Local procedure to print out a table.
      PROCEDURE Print(p_Table IN NumTab) IS
        v_Index INTEGER;
      BEGIN
        v_Index := p_Table.FIRST;
        WHILE v_Index <= p_Table.LAST LOOP
          DBMS_OUTPUT.PUT('Element ' || v_Index || ': ');
          DBMS_OUTPUT.PUT_LINE(p_Table(v_Index));
          v_Index := p_Table.NEXT(v_Index);
        END LOOP;
        DBMS_OUTPUT.PUT_LINE('COUNT = ' || p_Table.COUNT);
        DBMS_OUTPUT.PUT_LINE('LAST = ' || p_Table.LAST);
      END Print;BEGIN
      DBMS_OUTPUT.PUT_LINE('At initialization, v_Numbers contains');
      Print(v_Numbers);  -- Delete element 6.
      DBMS_OUTPUT.PUT_LINE('After delete(6), v_Numbers contains');
      v_Numbers.DELETE(6);
      Print(v_Numbers);  -- Delete elements 7 through 9.
      DBMS_OUTPUT.PUT_LINE('After delete(7,9), v_Numbers contains');
      v_Numbers.DELETE(7,9);
      Print(v_Numbers);
    END;
    /