游標---pl_sql裡面的重點****:
declare ---loop迴圈
cursor c is --宣告乙個游標
select * from emp;
v_emp c%rowtype; --宣告一條記錄
begin
open c; --開啟游標
loop
fetch c into v_emp; --擷取資料。
exit when (c%notfound); --判斷游標是否到終點
dbms_output.put_line(v_emp.ename);
end loop;
close c; --關閉游標
end;
--while迴圈
declare
cursor c is
select * from emp;
v_emp emp%rowtype;
begin
open c;
fetch c into v_emp;
while (c%found) loop
dbms_output.put_line(v_emp.ename);
fetch c into v_emp;
end loop;
close c;
end;
--for迴圈,不容易出錯,用得最多。
declare
cursor c is
select * from emp;
begin
for v_emp in c loop --不需要定義v_emp,自動開啟,關閉c.自動fetch資料。
dbms_output.put_line(v_emp.ename);
end loop;
end;
---帶引數的游標
declare
cursor c(v_deptno emp.deptno%type,v_job emp.job%type)
isselect ename,sal from emp where deptno = v_deptno and job = v_job;
begin
for v_temp in c(30,'clerk') loop
dbms_output.put_line(v_temp.ename);
end loop;
end;
---可更新的游標
declare
cursor c
isselect * from emp2 for update; --跟上for update表示可更新游標。
begin
for v_temp in c loop
if(v_temp.sal < 2000) then
update emp2 set sal = sal * 2 where current of c; ---更新游標所指的當前記錄
elsif (v_temp.sal = 5000) then
delete from emp2 where current of c; ---where current of c.
end if;
end loop ;
end;
SQL語言基礎 續四
oracle下特有的一些東西。rownum認識 oracle 只能和小於 小於等於 搭配使用。記錄剛剛取出來的資料的行號,排序過後的資料不管用。解決辦法,對資料先進行排序,再把結果當作乙個表來用,可把rownum顯示的呼叫出來 對於大於或者區間取值,只能把rownum調出來,再進行比較。update...
PLSQL基礎(四)儲存過程與函式
儲存過程 create or replace procedure 過程名 引數定義部分 is.區域性變數定義部分 begin 可執行部分 exception 異常處理部分 end 過程名 在end後可以加上儲存過程名,也可以不加。如果要在end後加過程名,則必須要和前面的儲存過程名相同。在定義乙個儲...
PL SQL程式設計基礎 PL SQL簡介
課程教師 李興華 課程學習者 陽光羅諾 日期 2018 07 28 知識點 1 了解pl sql的主要特點 2 掌握pl sql塊的基本結構 pl sql語法結構 語法 declare 宣告部分,例如。定義變數 常量 游標。begin 程式編寫 sql語句 exeception 處理異常 end 說...