Cyh的博客

          Email:kissyan4916@163.com
          posts - 26, comments - 19, trackbacks - 0, articles - 220

          導航

          公告

          一直努力努力努力,像奴隸奴隸奴隸!~~
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          隨筆檔案(25)

          文章分類(219)

          文章檔案(220)

          新聞檔案(66)

          相冊

          收藏夾(7)

          最新隨筆

          搜索

          •  

          最新評論

          閱讀排行榜

          存儲過程

          Posted on 2009-02-16 19:30 啥都寫點 閱讀(376) 評論(0)  編輯  收藏 所屬分類: DB

          --demo1

          create or replace procedure proc_query_emp

          ( p_empno emp.empno%type)

          is

           v_emp emp%rowtype;

          begin

           select * into v_emp

           from emp where empno = p_empno;

           

           dbms_output.put_line(v_emp.empno);

           dbms_output.put_line(v_emp.ename);

           dbms_output.put_line(v_emp.sal);

          end;

          --demo2

          create or replace procedure proc_i_dept

          (p_deptno dept.deptno%type,

           p_dname dept.dname%type,

           p_loc dept.loc%type

          )

          is

          begin

           insert into dept(deptno,dname,loc)

           values(p_deptno,p_dname,p_loc);

           commit;

          end;

          --demo3

          create or replace procedure proc_test_par

          ( p_i in varchar2,

           p_j out varchar2,

           p_m in out varchar2

          )

          is

          begin

           p_j := '2';

           dbms_output.put_line(p_i);

           dbms_output.put_line(p_j);

            dbms_output.put_line(p_m);

          end;

          --demo4

          --step1

          create table pos_info

          ( pid char(3),

           pnum number

          )

          insert into pos_info values('001',0);

          insert into pos_info values('002',0);

          create table sales

          ( sid char(16),

           sdate date

          )

          --step2

          create or replace procedure proc_i_sales

          (p_pid char)

          is

           v_pnum pos_info.pnum%type;

          begin

           select pnum into v_pnum

           from pos_info where pid = p_pid;

           

           insert into sales(sid,sdate)

           values(p_pid || to_char(sysdate,'YYYYMMDD')

                         || lpad(v_pnum + 1,5,'0'),sysdate);

                  

           update pos_info

           set pnum = pnum + 1

           where pid = p_pid;

           

           commit;        

          end;

          --demo5

          create or replace procedure proc_getnum

          ( p_pid in pos_info.pid%type,

           p_pnum out pos_info.pnum%type

          )

          is

          begin

           select pnum into p_pnum

           from pos_info where pid = p_pid;

          end;

          create or replace procedure proc_new_sales

          (p_pid char)

          is

           v_pnum pos_info.pnum%type;

          begin

           

           proc_getnum(p_pid,v_pnum);

           

           insert into sales(sid,sdate)

           values(p_pid || to_char(sysdate,'YYYYMMDD')

                         || lpad(v_pnum + 1,5,'0'),sysdate);

                  

           update pos_info

           set pnum = pnum + 1

           where pid = p_pid;

           

           commit;        

          end;

          --demo6

          create or replace function fun_empsal

          ( p_empno emp.empno%type)

          return varchar2

          is

           v_emp emp%rowtype;

          begin

           select * into v_emp

           from emp where empno = p_empno;

           

           if v_emp.sal >= 3000 then

              return 'OK';

           else

              return 'NO';  

           end if; 

           

          end;

          --demo7

          --創建在dept表中插入和刪除一個記錄的數據包,它且有一個函數(返回插入或刪除的部門名稱)和兩個過程。然后調用包。

          CREATE OR REPLACE PACKAGE deptpack

          AS

           PROCEDURE inser(dno IN NUMBER,NAME IN VARCHAR2,location IN VARCHAR2);

           PROCEDURE de(dno IN NUMBER);

           FUNCTION getdname(num IN NUMBER) RETURN VARCHAR2;

          END deptpack;

          CREATE OR REPLACE PACKAGE BODY deptpack

          AS

           PROCEDURE inser(dno IN NUMBER,NAME IN VARCHAR2,location IN VARCHAR2)

           AS

           BEGIN

              INSERT INTO dept VALUES(dno,NAME,location);

              dbms_output.put_line('1 record inserted!');

           END inser;

           PROCEDURE de(dno IN NUMBER)

           AS

           BEGIN

              DELETE FROM dept WHERE deptno=dno;

           END de;

           FUNCTION getdname(num IN NUMBER)

           RETURN VARCHAR2

           AS

              vname VARCHAR2(10);

           BEGIN

              SELECT dname INTO vname FROM dept WHERE deptno=num;

              RETURN vname;

           EXCEPTION

              WHEN no_data_found THEN

              dbms_output.put_line('No such deptno exists!');

           END getdname;

          END deptpack;



                                                                                                                 --    學海無涯
                  


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 固镇县| 闽清县| 高邮市| 谷城县| 唐河县| 东兴市| 家居| 启东市| 梧州市| 菏泽市| 唐河县| 金门县| 都江堰市| 邵东县| 自治县| 金阳县| 乐昌市| 兴和县| 汉中市| 新安县| 阜新| 柳江县| 静安区| 云龙县| 泗洪县| 色达县| 普兰店市| 雷州市| 女性| 乐安县| 海丰县| 彰化县| 开封市| 吴川市| 策勒县| 右玉县| 利辛县| 松江区| 海安县| 石景山区| 四子王旗|