PLSQL基本控制語句

2022-07-23 13:48:42 字數 3889 閱讀 8905

--根據員工號,查詢員工薪水

declare

v_empno emp.empno%type;

v_sal emp.sal%type;

begin

v_empno := '

7369

';select sal into v_sal from emp where empno = v_empno;

dbms_output.put_line(v_sal);

exception

when no_data_found then

dbms_output.put_line('

員工編號有誤

');end;

--基礎for迴圈

begin

for v_i in 1 .. 10 loop

dbms_output.put_line(v_i);

exit when v_i = 5;

end loop;

end;

--在for迴圈中使用子查詢

begin

for v_emp_record in (select * from emp)loop

dbms_output.put_line(v_emp_record.ename);

end loop;

end;

--游標for迴圈

declare

--定義乙個游標

cursor emp_cursor(v_empno emp.empno%type, v_ename emp.ename%type) is

select *

from emp e

where e.empno = v_empno

and e.ename = v_ename;

begin

for v_emp_record in emp_cursor(7788, upper('

scott

')) loop

dbms_output.put_line(v_emp_record.ename);

end loop;

end;

--goto語句的使用

begin 

for v_i in 1..10 loop

dbms_output.put_line(v_i);

goto caodan;

end loop;

<>

dbms_output.put_line('

caodan

');end;

--游標使用! 游標分為隱式游標和顯示游標

--顯示游標分為4個階段,定義游標,開啟游標,提取資料和關閉游標4個階段。

declare

--定義游標

cursor emp_cursor is

select empno, ename from emp;

--定義游標

v_empno emp.empno%type;

v_ename emp.ename%type;

begin

--開啟游標

if not emp_cursor%isopen then --等同於 if emp_cursor%isopen = false then

open emp_cursor;

end if;

--提取資料

loop

fetch emp_cursor

into v_empno, v_ename;

exit when emp_cursor%notfound;

dbms_output.put_line(v_ename || '

:' || v_empno);

end loop;

--關閉游標

if emp_cursor%isopen then

close emp_cursor;

end if;

end;

--請給出emp表中的第5條記錄

declare cursor emp_cursor

isselect * from emp ;

v_emp_rec emp%rowtype;

begin

--開啟游標

if(not emp_cursor%isopen) then

open emp_cursor;

end if;

--從游標中提取資訊

fetch emp_cursor into v_emp_rec;

while(emp_cursor%found) loop

--判斷是否是第5條資料

--通過游標屬性——游標計數器統計

if(emp_cursor%rowcount=5) then

dbms_output.put_line('

雇員編號:

'||v_emp_rec.empno);

dbms_output.put_line('

雇員姓名:

'||v_emp_rec.ename);

dbms_output.put_line('

雇員工資:

'||v_emp_rec.sal);

end if;

--為了避免形成死迴圈

fetch emp_cursor into v_emp_rec;

end loop;

--關閉游標

if(emp_cursor%isopen) then

close emp_cursor;

end if;

end;

--使用游標for迴圈如何控制

declare cursor emp_cursor

isselect * from emp;

begin

for idx in emp_cursor loop

if(emp_cursor%rowcount=5) then

dbms_output.put_line('

雇員編號:

'||idx.empno);

dbms_output.put_line('

雇員姓名:

'||idx.ename);

dbms_output.put_line('

雇員工資:

'||idx.sal);

end if;

end loop;

end;

--使用pl/sql表

declare

cursor emp_cursor is

select * from emp where empno = &empno;

--定義乙個pl/sql表型別的變數(陣列),進行類似集合操作

type emp_table_type is table of emp%rowtype;

emp_table emp_table_type;

begin

open emp_cursor;

fetch emp_cursor bulk collect

into emp_table;

close emp_cursor;

--通過迴圈來處理pl/sql表中的內容

for i in 1 .. emp_table.count loop

dbms_output.put_line(emp_table(i).ename);

end loop;

end;

PL SQL控制語句

本節要點 l 迴圈結構控制語句 pl sql既然是面向過程的程式語言,那麼它就有針對邏輯的控制語句,這些語句在日常的pl sql程式設計中起著很重要的作用,可以完成業務邏輯的框架部分。下面就來介紹pl sql的邏輯控制語句。1選擇結構控制語句 1.1if條件控制語句 條件控制語句就是根據當前某個引數...

PL SQL 迴圈控制語句

判斷語句 if.else declare v age number not null 50 beginif0 v age and v age 18 then dbms output.put line 兒童 elsif 18 v age and v age 30 then dbms output.pu...

PL SQL基本迴圈語句

基本迴圈結構包含loop和end loop語句之間的語句序列。通過每次迭代,執行語句序列,然後在迴圈頂部繼續控制。pl sql程式語言的基本迴圈語法是 loop sequence of statements end loop 這裡,語句序列 sequence of statements 可以是單個語...