PLSQL 程式設計基礎

2021-07-04 09:02:07 字數 3867 閱讀 7965

sql(structured query language):一種結構化查詢語言,是一種資料庫查詢和程式語言,用於訪問資料以及查詢、更新和管理關係資料庫系統。簡單理解為平時說的「增刪改查」等等(不嚴謹)

plsql(procedural language/sql):一種過程化sql語言,是面向過程的。在sql的基礎上進行程式設計,增加了變數處理、語句的執行控制(begin…end)、exception等功能。

注:oracle 叫 plsql,db2叫sqlpl… 叫法不一樣。此文章針對oracle的plsql。

pl/sql程式由塊結構組成,每乙個塊都包含有pl/sql和sql語句。

塊的結構如下:

[declare 

-- 程式的宣告部分,例如,定義變數 ①

]begin

-- 程式的執行體,具體的操作** ②

[exception

-- 異常的處理 ③

]end ;

變數在declare塊中宣告。變數宣告同時包含名稱和型別。

變數的分類(按存值多少分):

4.1 條件語句

if 布林表示式1

then

語句塊1

elsif 布林表示式2

then

語句塊2

else

語句塊3

endif;

4.2 迴圈語句

4.2.1 loop 迴圈

loop

語句塊exit

when 退出條件;

更改條件;

endloop;

4.2.2 while 迴圈

while 迴圈條件表示式 loop

語句塊end

loop;

4.2.3 for 迴圈

for 迴圈變數 in [reverse] 迴圈下限.. 迴圈上限 loop

語句塊end

loop;

游標(cursor)是oracle系統在記憶體中開闢的乙個工作區,在其中存放select語句返回的查詢集。在游標所定義的工作區中,存在著乙個指標(pointer),在初始狀態它指向查詢結果的首記錄。當指標放置到某行後,即可對該行資料進行操作。

5.1 使用游標時的5個步驟

a.宣告游標,並指定查詢

b.宣告一些變數,用來儲存記錄的列值

c.開啟游標

d.一次從游標中獲取乙個記錄。

e.關閉游標

5.2 游標的4個屬性

%isopen:是否開啟

%rowcount:行數

%found:boolean值,是否還有資料

%notfound:是否已無資料

例1

--開啟serveroutput,可以檢視執行結果

set serveroutput on;

declare

--基本型別變數宣告①

p_name varchar2(20) := 'helloword';

p_date date := sysdate;

--引用型別變數宣告②

p_chnname sac_channel_param.chn_name%type;

p_banknodecode sac_channel_param.bank_node_code%type;

--記錄型別變數宣告③

p_row sac_channel_param%rowtype;

--記錄型別變數宣告2④

type p_channel_record is record(

p_name sac_channel_param.chn_name%type,

p_code sac_channel_param.bank_node_code%type

);p_channel p_channel_record;

--表型別變數宣告⑤

type p_chn_table is table of

sac_channel_param%rowtype

index by binary_integer; --指索引組織型別

p_chn p_chn_table;

begin

--列印基本型別變數值①

dbms_output.put_line(p_name);

dbms_output.put_line(p_date);

--列印引用型別變數值②

select chn_name,bank_node_code into p_chnname,p_banknodecode from sac_channel_param where id=12345678;

dbms_output.put_line(p_chnname||'的銀行節點是'||p_banknodecode);

--列印記錄型別變數值③

select * into p_row from sac_channel_param where id=12345678;

dbms_output.put_line(p_row.chn_name||'的銀行節點是'||p_row.bank_node_code);

--列印記錄型別變數值④

select chn_name,bank_node_code into p_channel from sac_channel_param where id=12345678;

dbms_output.put_line(p_channel.p_name||'的銀行節點是'||p_channel.p_code);

--列印表型別變數值⑤

select * bulk collect into p_chn from sac_channel_param where id=12345678;

--bulk collect into 指是乙個成批聚合型別,簡單的來說,它可以儲存乙個多行多列儲存型別

dbms_output.put_line(p_chn(1).chn_name||'的銀行節點是'||p_chn(1).bank_node_code);

end;

/

例2

--例子包含 游標(不帶引數)、選擇語句、迴圈語句

set serveroutput on

declare

cursor aa is

select * from sac_channel_param;--宣告游標

p_chn sac_channel_param%rowtype; --宣告變數

begin

open aa; --開啟游標

loop

--迴圈

fetch aa into p_chn;--取一條值

exit

when aa%notfound; --退出迴圈條件

ifmod(aa%rowcount,2)=0

then

dbms_output.put_line(p_chn.chn_name||'的銀行節點是'||p_chn.bank_node_code);

elsif

mod(aa%rowcount,2)!=0

then

dbms_output.put_line(p_chn.id||'的銀行節點是'||p_chn.bank_node_code);

endif; end

loop; --退出迴圈

close aa; --關閉游標

end;

/

後續補充其他……

PL SQL程式設計基礎 PL SQL簡介

課程教師 李興華 課程學習者 陽光羅諾 日期 2018 07 28 知識點 1 了解pl sql的主要特點 2 掌握pl sql塊的基本結構 pl sql語法結構 語法 declare 宣告部分,例如。定義變數 常量 游標。begin 程式編寫 sql語句 exeception 處理異常 end 說...

PL SQL 基礎程式設計

pl sql 程式設計 pl sql結構 declare 宣告變數 begin 執行部分 exception 異常處理部分 endpl sql 基本資料型別 數值型別 1 number p,s 例如 number 9,2 表示精度為9 點後兩位的數。ps 既可以表示整形和浮點型。字元型別 2 pl ...

PL SQL程式設計基礎

cursor 游標 游標屬性 cur tmp found 至少影響到一行資料為true cur tmp notfound 與 found相反 cur tmp rowcount 返回受sql語句影響的行數 cur tmp isopen 游標開啟時為true 顯示cursor set serverout...