--根據員工號,查詢員工薪水
declarev_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迴圈
beginfor 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語句的使用
beginfor 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_cursorisselect * 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表
declarecursor 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 可以是單個語...