pl sql我的筆記

2021-08-29 05:24:05 字數 3697 閱讀 2623

show error;
1.	create table mytest(name varchar2(30),passwd varchar2(30));

2. create or replace procedure my_pro1 is

3. begin

4. insert into mytest values('why','m1234');

5. end;

6. \

1)exec 過程名(引數值1,引數值2...);

2)call 過程名(引數值1,引數值2...);

每寫一次呼叫程序語句,就會在mytest表中新增一項why

exec my_pro1;
塊=過程(儲存過程)+函式+觸發器+包

定義部分,執行部分,例外處理部分:

declare

/*定義部分——定義常量、變數、游標、例外、複雜資料型別*/

begin

/*執行部分——要執行的pl/sql語句和sql語句*/

exception

/*例外處理部分——處理執行的各種錯誤*/

end;

定義部分是從declare開始的,該部分是可選的;

執行部分是從begin開始的,該部分是必須的;

例外處理部分是從exception開始的,該部分是可選的。

dbms_output.put_line('使用者名稱是'||v_name||'工資是'||v_sal);
create procedure my_pro2(my_name varchar2,newsal number) is
塊中定義變數在declare與begin之間,過程定義變數在is和begin之間

if....then;if....then....else;if....then....elsif....else....

簡單的條件判斷 if – then 

問題:編寫乙個過程,可以輸入乙個雇員名,如果該雇員的工資低於2000,就給該員工工資增加10%。

1. create or replace procedure sp_pro6(spname varchar2) is

2. --定義

3. v_sal emp.sal%type;

4. begin

5. --執行

6. select sal into v_sal from emp where ename=spname;

7. --判斷

8. if v_sal<2000 then

9. update emp set sal=sal+sal*10% where ename=spname;

10. end if;

11. end;

12. /

二重條件分支 if – then – else 

編寫乙個過程,可以輸入乙個雇員名,如果該雇員的補助不是0就在原來的基礎上增加100;如果補助為0就把補助設為200;

1. create or replace procedure sp_pro6(spname varchar2) is

2. --定義

3. v_comm emp.comm%type;

4. begin

5. --執行

6. select comm into v_comm from emp where ename=spname;

7. --判斷

8. if v_comm<>0 then

//pl/sql中不等於是'<>'

9. update emp set comm=comm+100 where ename=spname;

10. else

11. update emp set comm=comm+200 where ename=spname;

12. end if;

13. end;

14. /

exec sp_pre6('scott');

//名字必須大寫

多重條件分支 if – then – elsif – then 

問題:編寫乙個過程,可以輸入乙個雇員編號,如果該雇員的職位是president就給他的工資增加1000,如果該雇員的職位是manager就給他的工資增加500,其它職位的雇員工資增加200。

sql**

1. create or replace procedure sp_pro6(spno number) is

2. --定義

3. v_job emp.job%type;

4. begin

5. --執行

6. select job into v_job from emp where empno=spno;

7. if v_job='president' then

8. update emp set sal=sal+1000 where empno=spno;

9. elsif v_job='manager' then

10. update emp set sal=sal+500 where empno=spno;

11. else

12. update emp set sal=sal+200 where empno=spno;

13. end if;

14. end;

15. /

exec sp_pre6(7839);

案例:現有一張表users,表結構如下: 

使用者id | 使用者名稱

| 請編寫乙個過程,可以輸入使用者名稱,並迴圈新增10個使用者到users表中,使用者編號從1開始增加。

sql**

1. create or replace procedure sp_pro6(spname varchar2) is

2. --定義 :=表示賦值

3. v_num number:=1;

4. begin

5. loop

6. insert into users values(v_num,spname);

7. --判斷是否要退出迴圈

8. exit when v_num=10;

9. --自增

10. v_num:=v_num+1;

11. end loop;

12. end;

13. /

基本迴圈至少要執行迴圈體一次,而對於while迴圈來說,只有條件為true時,才會執行迴圈體語句,while迴圈以while...loop開始,以end loop結束。while先判斷,再決定循不迴圈,loop直接先迴圈 

PLSQL基礎筆記

來杭州學習半年多了 今天終於講到以前關注的oracle pl sql儲存過程 整理一下上課敲的 先了解要用到的知識 1.variable 變數 語法 var name var type constant not null value declare v fname varchar2 50 為了保障變...

PL SQL學習筆記

from ebs pl sql儲存過程報表輸出 1.fnd file.put line fnd file.log,l err idx 從mes表獲取tool id tool.tool id 出現異常錯誤!2.fnd file.put line fnd file.output,文字輸出內容.獲取物件結...

PL SQL學習筆記

1 啟動sqlplus crtl r sqlplus 啟動sqlplus 輸入使用者名稱密碼登陸oracle 輸出hello world!ps sql set serveroutput on 這句不寫的話不會有結果輸出 sql begin 2 dbms output.put line hello w...