有气质的熊(minbear)

Life = Joy.Parse( Work + Study + Living);

导航

统计

公告

Oracle Package的应用示例

--标准包
CREATE OR REPLACE PACKAGE PSNINFO IS
  Procedure Next_Seed
  ( ttt varchar2 , next_value out number);
END;

CREATE OR REPLACE PACKAGE BODY PSNINFO
IS
    Procedure Next_Seed
     ( ttt varchar2 , next_value out number)
     IS
     
      Begin
             insert into SEED (category, next) values (1, 1);
    end Next_Seed;
END;

-------------------------------------------------------------------------
--取得自增数字

CREATE OR REPLACE PACKAGE PSNINFO2 IS
  Procedure Next_Seed
  ( category varchar2 , next_value out number);
END;

CREATE OR REPLACE PACKAGE BODY PSNINFO2
IS
    Procedure Next_Seed
     ( category varchar2, next_value out number)
     IS

      CURSOR cursor_sequence
        IS
           Select SEED.next From SEED Where SEED.category = Next_Seed.category
            FOR UPDATE;
        NextSeed number;
      Begin
        OPEN cursor_sequence;

        FETCH cursor_sequence INTO NextSeed;
        IF cursor_sequence%NOTFOUND
        THEN
            LOCK TABLE SEED IN EXCLUSIVE MODE;
            NextSeed := 1;
            insert into SEED (category, next) values (category, 1);
        ELSE
            NextSeed := NextSeed + 1;
            Update SEED set next = NextSeed Where SEED.category = Next_Seed.category;
        END IF;
        next_value := NextSeed;

    end Next_Seed;
END;

-------------------------------------------------------------------------
--带游标返回的包

CREATE OR REPLACE PACKAGE PSNINFO4 IS
  TYPE type_resource_cursor IS REF CURSOR;
  Procedure GETPSN
  (PSNDATA out type_resource_cursor);
END;

CREATE OR REPLACE PACKAGE BODY PSNINFO4
IS
    Procedure GETPSN
     (PSNDATA out type_resource_cursor)
     IS

      Begin
        OPEN PSNDATA FOR
            Select * From PSNACCOUNT;
       
    end GETPSN;
END;

posted on 2009-04-16 15:59 minbear 阅读(344) 评论(0)  编辑 收藏