帥哥,比我強多了,
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                   
一直都不怎麼明白in,out是怎麼用的???

解决方案 »

  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; 
          fetch fmd into CAPT_ORGION,FISCAL,FIS_PERD,PAY_DATE,BG_DEPTCODE,B_ACC_CODE,OUTLAY_CODE,BI_SUM
          while fmd%not found/**** 重复地插入 这个的语法有吗   *****/
          loop       
          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 ufanyi_TESTsa;
      

  2.   

    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 
    begin
     declare 
       
      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;
      

  3.   

    上面错了,下面的试试:
    *******************************************************************************************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;
      

  4.   

    应该:exit when fmd%notfound;UP
      

  5.   

    同意 ylhyh(阳光)的做法
    但我想既然是用游标,那定义个 fmd%rowtype 的变量可能更好,就不用去定义这么多的varchar2和number了