oracle 中的PL SQL基礎(下)

2021-08-28 04:07:12 字數 3430 閱讀 7701

pl/sql +序列

回顧:關於序列有兩個偽列:nextval 返回序列的下乙個值、currval 返回序列的當前值。

通常使用語句 select seq1 nextval from dual; 來查詢序列的值。而結合pl/sql我們可以採用如下方法:

-- 建立乙個序列

create sequence seq1 start

with

1 increment by

1;--開啟開關

set serverout on

--plsql

declare

aa int ;

begin

aa := seq1.nextval;

-- 等同 select seq1.nextval into aa from dual;

dbms_output.put_line('aa的值是'||aa);

end;

/ --表示執行plsql命令 (本個) 單一輸入/表示執行上乙個plsql段

邏輯比較用於比較變數和常量的值,這些表示式稱為布林表示式

布林表示式由關係運算子與變數或常量組成

布林表示式的結果為true、false或null,通常由邏輯運算子and、or和not連線

布林表示式有三種型別:

數字布林型

字元布林型

日期布林型

pl/sql 支援的流程控制結構:

條件控制

if 語句

case 語句

迴圈控制

loop 迴圈

while 迴圈

for 迴圈

順序控制

goto 語句

null 語句

(1)

if 語句根據條件執行一系列語句,有三種形式:if-then、if-then-else 和 if-then-elsif

假設有乙個學生表包含三列 學號 姓名 生日,現在要求判斷指定學生的年齡是否大於25歲。

declare

bage student.birthday%type

begin

select birthday into bage from student where sno=2;

if birthday '19930101' , 'yyyymmdd') then

dbms_output.put_line('該生大於25歲');

else

dbms_output.put_line('該生小於等於25歲');

endif ;

end;

/

(2)

case 語句用於根據單個變數或表示式與多個值進行比較

執行case 語句前,先計算選擇器的值

declare

outgrade varchar2(20);

begin

outgrade :=case &grade

when

'a'then

'優秀'

when

'b'then

'良好'

when

'c'then

'中等'

when

'd'then

'及格'

when

'e'then

'不及格'

else

'沒有此成績'

end;

dbms_output.put_line( outgrade );

end;

/輸入 grade 的值: 'a'

原值 4: outgrade :=case &grade

新值 4: outgrade :=case 'a'

優秀

loop

declare

i number :=0;

begin

i :=1;

loop

dbms_output.put_line(i||'--');

exit

when i>7; -- loop 的停止條件

i :=i+1;

endloop;

dbms_output.put_line('-end-');

end;

/

while

declare

j number :=0;

begin

j :=1;

while

j<=8 --宣告while條件 執行迴圈的條件

loop

dbms_output.put_line(j||'--');

j :=j+1;

end loop;

dbms_output.put_line('-end-');

end;

for

declare

m number :=0;

begin

for m in

1..8

loop

dbms_output.put_line(m||'--');

endloop;

dbms_output.put_line('-end-');

end;

結果:1--2

--3--4

--5--6

--7--8

---end-

exit when j>4 ; 迴圈提前結束條件。

declare 

i number :=1;

begin

loop

i := i +1;

exit

when i>8;

continue

when i<4;

dbms_output.put_line(to_char(i));

endloop;

end;

/結果為:45

678

declare 

i number :=1;

begin

i :=1;

<>

dbms_output.put_line(to_char(i));

i := i +1;

ifi<=7 then goto aa; end

if; if

i>7 then goto bb; end

if; <> null;

dbms_output.put_line('結束');

end;

oracle基礎 pl sql的游標

result set 結果集 在pl sql中使用游標代表乙個 集合 定義 cursor 游標名 引數名 資料型別 eg cursor c1 is select name from test 定義了乙個游標c1,該內容是所有名稱name的集合 found 是游標取到值為真 notfound 是游標沒...

Oracle中PL SQL中if語句的寫法介紹

複製 如下 if語句 判斷使用者輸入的數字。set serveroutput on 接收鍵盤輸入 accept num prompt 請輸入乙個數字 declare nbfaqqlsysp 將螢幕輸入的數字付給變數 pnum number begin if pnum 0 then dbms outp...

PL SQL中oracle的sql優化

之前看了好多oracle的sql優化問題,發現好多說法不一致,後來看了下時間,有的都是好多年前的了.所以,勸大家在 眾裡尋他千 查東西的時候,一定要多看幾條,而且要注意看日期.當然,我說的也不一定對,僅供參考 1.建立索引和分割槽 2.針對oracle中 count count 列 count 1 ...