原 Oracle pl sql 流程控制

2021-09-01 12:47:55 字數 3458 閱讀 6703

(注:主要摘自尚矽谷oracle教程筆記)

pl/sql的流程控制語句,包括如下三類:

if 《布林表示式》 then

pl/sql 和 sql 語句;

end if;

if 《布林表示式》 then

pl/sql 和 sql 語句;

else

其他語句;

end if;

if 《布林表示式》 then

pl/sql 和 sql 語句;

elsif 《其他布林表示式》 then

其他語句;

elsif 《其他布林表示式》 then

其他語句;

else

其他語句;

end if;

示例:

使用 if … then … elsif … then …else … end if

要求: 查詢出 150號 員工的工資, 若其工資大於或等於 10000 則列印 『salary >= 10000』;

若在 5000 到 10000 之間, 則列印 『5000<= salary < 10000』; 否則列印 『salary < 5000』

(方法一)

declare

v_salary employees.salary%type;

begin

--通過 select ... into ... 語句為變數賦值

select salary into v_salary

from employees

where employee_id = 150;

dbms_output.put_line('salary: ' || v_salary);

-- 列印變數的值

if v_salary >= 10000 then

dbms_output.put_line('salary >= 10000');

elsif v_salary >= 5000 then

dbms_output.put_line('5000 <= salary < 10000');

else

dbms_output.put_line('salary < 5000');

end if;

(方法二)

declare

v_emp_name employees.last_name%type;

v_emp_sal employees.salary%type;

v_emp_sal_level varchar2(20);

begin

select last_name,salary into v_emp_name,v_emp_sal

from employees where employee_id = 150;

if(v_emp_sal >= 10000)

then v_emp_sal_level := 'salary >= 10000';

elsif(v_emp_sal >= 5000)

then v_emp_sal_level := '5000<= salary < 10000';

else v_emp_sal_level := 'salary < 5000';

end if;

dbms_output.put_line(

v_emp_name||','||v_emp_sal||','||v_emp_sal

);end;

case 表示式

語法:

case selector

when expression1 then result1

when expression2 then result2

...when expressionn then resultn

[else resultn+1]

end;

示例:

declare

v_sal employees.salary%type;

v_msg varchar2(50);

begin

select salary into v_sal

from employees

where employee_id = 150;

--case 不能向下面這樣用

/*case v_sal when salary >= 10000

then v_msg := '>=10000'

when salary >= 5000

then v_msg := '5000<= salary < 10000'

else v_msg := 'salary < 5000'

end;

*/v_msg :=

case trunc(v_sal / 5000)

when 0 then 'salary < 5000'

when 1 then '5000<= salary < 10000'

else 'salary >= 10000'

end;

dbms_output.put_line(v_sal ||','||v_msg);

end;

使用 case … when … then … else … end

要求: 查詢出 122 號員工的 job_id, 若其值為

『it_prog』, 則列印 『grade: a』;

『ac_mgt』, 列印 『grade b』,

『ac_account』, 列印 『grade c』;

否則列印 『grade d』

declare

--宣告變數

v_grade char(1);

v_job_id employees.job_id%type;

begin

select job_id into v_job_id

from employees

where employee_id = 122;

dbms_output.put_line('job_id: ' || v_job_id);

--根據 v_job_id 的取值, 利用 case 字句為 v_grade 賦值

v_grade :=

case v_job_id when 'it_prog' then 'a'

when 'ac_mgt' then 'b'

when 'ac_account' then 'c'

else 'd'

end;

dbms_output.put_line('grade: ' || v_grade);

end;

初識Oracle PL SQL控制流程

else if declare sals number begin select sal into sals from emp where empno empno if sals 2000 then dbms output.put line 掙得不多,需努力 else if sals 5000 th...

python流程控制 python之流程控制

電腦程式在解決某個具體問題時,包括三種情形,即順序執行所有的語句 選擇執行部分的語句和迴圈執行部分語句,這正好對應著程式設計中的三種程式執行結構流程 順序結構 選擇結構和迴圈結構。事實證明,任何乙個能用計算機解決的問題,只要應用這三種基本結構來寫出的程式都能解決。python語言當然也具有這三種基本...

mysql流程控制 MySQL 流程控制

流程控制 1 順序結構 程式從上往下依次執行 2 分支結構 多條路徑選擇一條 3 迴圈結構 在規定範圍內重複執行 一 分支結構 1 if函式 功能 實現分支流 語法 if 表示式1,表示式2,表示式3 執行順序 執行表示式1,成立返回表示式2的值,不成立則返回表示式3的值 應用 任何地方 例 if ...