Oracle學習筆記 九

2022-02-06 06:13:51 字數 4277 閱讀 2640

十二、pl/sql

1、pl/sql程式的結構和組成

示例:給員工漲工資(根據職位漲工資)

總裁漲1000

經理漲800

其他員工漲400

學習原因:1、運算元據庫效率最高

2、為了後期的儲存過程的學習

2、pl/sql具體案例

set serveroutput on

----------列印hello world

declare

-----說明部分(變數,游標或者例外)

begin

-----程式體

dbms_output.put_line('hello world');

end;

put_line ----儲存過程

檢視方法

desc dbms_output

3、什麼是pl/sql程式?

(1)pl/sql 意為過程語言的sql

(2)pl/sql是oracel對sql語言的過程化擴充套件

--指在sql命令語言中增加了過程處理語句(如分支、迴圈等),使sql語言具有過程處理能力.

(3)pl/sql的提出

例1、為職工長工資,每人長10%的工資

update emp set sal=sal*1.1

特點:命令式的語言

例2、按職工的職稱長工資,總裁長1000元,經理長800元,其他人員長400.(此問題應用plsql)

sql語言的資料操縱能力+過程語言的資料處理能力=pl/sql

pl/sql是面向過程的語言:但是比過程語言更加的簡單、高效、靈活、實用。

不同資料庫的sql擴充套件:

oracle:pl/sql

db2:sql/pl

sql server:transac-sql(t-sql)

4、pl/sql的程式結構

declare

說明部分(變數說明、游標申明、例外說明)

begin

語句序列(dml語句)

exception

例外處理語句

end;

/說明部分:

定義基本變數

型別:char,varchar2,date,number,boolean,long

舉例:var1 char(15);

married boolean :=true;

psal number(7,2);

例:--使用基本變數型別

declare

--定義基本變數型別

--基本資料型別

pnumber number(7,2);

--字串變數

pname varchar2(20);

--日期變數

pdate date;

set serveroutput on

begin

pnumber :=1;

dbms_output.put_line(pnumber);

pname:='tom';

dbms_output.put_line(pname);

pdate:=sysdate;

dbms_output.put_line(pdate);

--計算明天的日期

dbms_output.put_line(pdate+1);

end;

語句序列部分

說明部分:

引用型變數

舉例:my_name emp.ename%type;

--定義引用型變數:查詢並列印7839的姓名和薪水

set serveroutput on

declare

pename emp.ename%type;

psal emp.sal%type;

begin

select ename, sal into pename,psal from emp where empno=7839;

--列印員工薪水

dbms_output.put_line(pename||'的薪水是'||psal);

end;

記錄型變數

舉例:emp_rec emp%rowtype;

記錄型變數分量的引用

emp_rec.ename:='adams';

--記錄型變數:查詢並列印7839的姓名和薪水

set serveroutput on

declare

emp_rec emp%rowtype;

begin

select * into emp_rec from emp where empno=7839;

--列印員工薪水

dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);

end;

begin....end中間部分,如何使用if語句

1、if 條件 then 語句1;

語句2;

end if;

2、if 條件 then 語句序列1;

else 語句序列2;

end if;

3、if 條件 then 語句;

elsif 語句 then 語句;

else 語句;

end if;

事例:判斷使用者在鍵盤上輸入的數字

說明:1、如何使用if語句

2、接收乙個鍵盤輸入(字串)

set serveroutput on;

--接收乙個鍵盤輸入

--num:位址值 含義是:在該位址上儲存了輸入的值

accept num prompt '請輸入乙個數字(0或1或2)';

declare

--定義變數儲存使用者從鍵盤輸入的數字

pnum number:=#

begin

--執行if語句進行條件判斷

if pnum =0 then dbms_output.put_line('您輸入數字是0');

elsif pnum =1 then dbms_output.put_line('您輸入數字是1');

elsif pnum =1 then dbms_output.put_line('您輸入數字是2');

else dbms_output.put_line('其他數字');

end if;

end;

迴圈語句:

(1)while迴圈

while total<=25000 loop

...total:=total+salary;

end loop;

(2)loop迴圈

loop

exit[when 條件];

....

end loop;

(3)for迴圈

for i in 1..3 loop

語序序列;

end loop;

事例1--------使用while迴圈列印數字的1~10

set serveroutput on

declare

--定義迴圈變數

pnum number:=1;

begin

while pnum <=10 loop

--迴圈體

dbms_output.put_line(pnum);

--使該變數+1

pnum:=pnum+1;

end loop;

end;

事例2---------使用loop迴圈列印數字的1~10

set serveroutput on

declare

--定義迴圈變數

pnum number:=1;

begin

loop

--退出條件:迴圈變數大於10

exit when pnum >10;

dbms_output.put_line(pnum);

--使該變數+1

pnum:=pnum+1;

end loop;

end;

事例3---------使用for迴圈列印數字的1~10

declare

--定義迴圈變數

pnum number:=1;

begin

for pnum in 1..10 loop

dbms_output.put_line(pnum);

end loop;

end;

總結:1、變數的定義

基本資料型別變數

引用型變數

記錄型變數

2、迴圈和條件判斷

漲工資未完成。

Oracle學習筆記(九) 查詢語句

基本查詢語句 select distinct column name1,from table name where conditions sql plus中設定格式 設定顯示名稱 column column name heading new name colum可以簡寫為col 例項 col use...

學習筆記(九)

字元處理只針對c n d t string型別,不做型別轉換,都按照c型別處理,也可以處理這些型別構成的結構體,有專門的字串比較 定位操作 concatenate first name last name into first name separated by separate.write fir...

Oracle 學習筆記(九)分頁查詢

上次筆記學到分頁查詢的三種方式 rowid 分析函式和 rownum,這次筆記重點學 rownum 方式的分頁查詢。1.查詢 emp 表為例 select from emp 2.顯示 rownum 由系統自己分配 select e.rownum rn from select from emp e r...