1. 程式人生 > >2018.5.30 Oracle數據庫PLSQL編程---遊標的使用

2018.5.30 Oracle數據庫PLSQL編程---遊標的使用

name 是否 dna 觸發 轉換 BE oracle數據庫 類型 --

/
顯示遊標處理步驟
1.聲明遊標
語法結構:cursor 遊標名稱 is SQL 語句;
2.打開遊標
語法結構:open遊標名稱;
3.提取數據
語法結構:fetch
4.關閉遊標
/

--顯示員工表中的姓名(返回的是多條記錄,必須使用遊標來處理)

set serveroutput on;
declare
--變量
--1.聲明遊標
cursor c_emp is select ename,sal from emp;
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
--代碼塊
--2.打開遊標
open c_emp;
--使用loop循環
loop
--3.提取數據
fetch c_emp into v_ename,v_sal;
exit when c_emp%notfound; --判斷遊標是否還有數據
--輸出信息
dbms_output.put_line(‘姓名:‘||v_ename||‘,工資:‘||v_sal);
end loop;

--4.關閉遊標
close c_emp;
end;

--2.record類型實現
declare
cursor c_emp is select ename,sal from emp;
type type_emp is record(
v_ename emp.ename%type,
v_sal emp.sal%type
);

v_record type_emp;
begin
--代碼塊
--2.打開遊標
open c_emp;
--使用loop循環
loop
--3.提取數據
fetch c_emp into v_record;
exit when c_emp%notfound; --判斷遊標是否還有數據
--輸出信息
dbms_output.put_line(‘姓名:‘||v_record.v_ename||‘,工資:‘||v_record.v_sal);
end loop;
--4.關閉遊標
close c_emp;
end;

--3.擴展:使用遊標類型來轉換
declare
cursor c_emp is select ename,sal,dname,loc from emp e,dept d where e.deptno=d.deptno;
v_cursor_emp c_emp%rowtype;

begin
--代碼塊
--2.打開遊標
open c_emp;
--使用loop循環
loop
fetch c_emp into v_cursor_emp;
--3.提取數據
exit when c_emp%notfound; --判斷遊標是否還有數據
--輸出信息
dbms_output.put_line(‘姓名:‘||v_cursor_emp.ename||‘,工資:‘||v_cursor_emp.sal || ‘部門名字:‘||v_cursor_emp.dname);
end loop;

--4.關閉遊標
close c_emp;
end;

--4.for(聲明遊標即可)
declare
cursor c_emp is select ename,sal,dname,loc from emp e,dept d where d.deptno=e.deptno;
begin
for i in c_emp loop
dbms_output.put_line(‘姓名:‘||i.ename|| ‘工資:‘||i.sal||‘部門名稱‘||i.dname);
end loop;
end;

--5.帶參數的遊標
declare
cursor c_emp(v_deptno emp.deptno%type)is select ename,sal,dname,loc from emp e,dept d where d.deptno=e.deptno;
begin
for i in c_emp(&n) loop
dbms_output.put_line(‘姓名:‘||i.ename|| ‘工資:‘||i.sal||‘部門名稱‘||i.dname||i.dname);
end loop;
end;

--6.觸發器
create or replace trigger t_1
after
insert on emp
begin
dbms_output.put_line(‘數據已經插入‘);
end;

insert into emp(empno,ename) values(11,‘Legend‘);

2018.5.30 Oracle數據庫PLSQL編程---遊標的使用