這樣的問(wèn)法好籠統(tǒng),不過(guò),還是把我整理的給你看看吧~個(gè)人整理,無(wú)復(fù)制的哦~
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到東臺(tái)網(wǎng)站設(shè)計(jì)與東臺(tái)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋東臺(tái)地區(qū)。
A:分類(lèi):
1:隱式游標(biāo):非用戶(hù)明確聲明而產(chǎn)生的游標(biāo). 你根本看不到cursor這個(gè)關(guān)鍵字.
2:顯示游標(biāo):用戶(hù)明確通過(guò)cursor關(guān)鍵字來(lái)聲明的游標(biāo).
3:引用游標(biāo):
B:什么是隱式游標(biāo):
1:什么時(shí)候產(chǎn)生:
會(huì)在執(zhí)行任何合法的SQL語(yǔ)句中產(chǎn)生.他不一定存放數(shù)據(jù).也有可能存放記錄集所影響的行數(shù).
如果執(zhí)行SELECT語(yǔ)句,這個(gè)時(shí)候游標(biāo)會(huì)存放數(shù)據(jù).如果執(zhí)行INSERT、UPDATE、 DELETE會(huì)存放記錄影響的行數(shù).
C:隱式游標(biāo)叫什么名字:
名字叫sql
關(guān)于sql的游標(biāo)變量到底有哪些呢?
作用:返回最近一次執(zhí)行SQL語(yǔ)句所涉及的游標(biāo)相關(guān)信息.因?yàn)槊繄?zhí)行一次SQL語(yǔ)句,都會(huì)產(chǎn)生一個(gè)隱式游標(biāo).那么當(dāng)前執(zhí)行的SQL語(yǔ)句就是當(dāng)前的隱式游標(biāo).
sql%found
sql%notfound
sql%rowcount
sql%isopen
D:關(guān)于隱式游標(biāo)的例子:
create table 學(xué)生基本信息表
(
StuID number(2),
StuName varchar2(20)
)
alter table 學(xué)生基本信息表 add constraint PK_STUID primary key(StuID)
declare
num number:=0;
begin
num:=num;
delete from 學(xué)生基本信息表 where StuID=num;
if sql%notfound then
dbms_output.put_line('該行數(shù)據(jù)沒(méi)有發(fā)現(xiàn)');
else
dbms_output.put_line('數(shù)據(jù)被發(fā)現(xiàn)并刪除,影響的行數(shù)為:'||sql%rowcount);
end if;
end;
E:關(guān)于顯示游標(biāo)的例子:
1:如何定義顯示游標(biāo)
declare cursor cursor_name is [select語(yǔ)句];
declare cursor mycur is select empno,ename,job from scott.emp;
2:如何打開(kāi)游標(biāo):
open cursor_name;
open mycur;
3:如何通過(guò)游標(biāo)來(lái)讀取數(shù)據(jù)
fetch cursor_name into variable_list
4:如何關(guān)閉游標(biāo):
close cursor_name;
close mycur;
注意:在Oracle中,不需要顯示銷(xiāo)毀游標(biāo).因?yàn)樵贠racle中,很多東西是由JAVA寫(xiě)的.Oracle會(huì)自動(dòng)銷(xiāo)毀游標(biāo).
5:舉例:
declare
cursor mycur is select empno,ename,job from emp; --創(chuàng)建游標(biāo)
vempno emp.empno%type;
vename emp.ename%type;
vjob emp.job%type;
begin
open mycur;--打開(kāi)游標(biāo)
fetch mycur into vempno,vename,vjob;--使用數(shù)據(jù)
dbms_output.put_line('I Found You!'||mycur%rowcount||'行');
dbms_output.put_line('讀取的數(shù)據(jù)為'||vempno||' '||vename||' '||vjob);
close mycur;
end;
因?yàn)橹蛔x出來(lái)一條,所以要遍歷一下:
declare
cursor mycur is select empno,ename,job from emp;
vempno emp.empno%type;
vename emp.ename%type;
vjob emp.job%type;
begin
open mycur;
loop—循環(huán),遍歷
fetch mycur into vempno,vename,vjob;
exit when mycur%notfound;
if mycur%found then
dbms_output.put_line('讀取的數(shù)據(jù)為'||vempno||' '||vename||' '||vjob);
end if;
end loop;
dbms_output.put_line('I Found You!'||mycur%rowcount||'行');
close mycur;
end;
6:通常情況下我們?cè)谧x取表數(shù)據(jù)的時(shí)候,我們需要?jiǎng)討B(tài)的去查詢(xún).所以能不能在Oracle中給游標(biāo)帶參數(shù)呢?可以!
1):如何定義帶參數(shù)的游標(biāo):
declare cursor cursor_name(參數(shù)名稱(chēng) 參數(shù)類(lèi)型描述) is select xxxxx from bbbbb where aaa==??? and ccc=???;
2):例子:
游標(biāo)是一個(gè)集合,讀取數(shù)據(jù)有兩種方式
第一種方式: open fetch close
第二種方式: for 一但使用了for循環(huán) ,在循環(huán)剛剛開(kāi)始的時(shí)候,相當(dāng)于執(zhí)行open,在處理循環(huán)的時(shí)候,相當(dāng)于執(zhí)行fetch,在退出循環(huán)的時(shí)候,相當(dāng)于執(zhí)行了close
Declare cursor query(vname varchar) is select empno,ename,job from emp where ename like'%'||vname||'%';
三種游標(biāo)的例子:
--
DECLARE
CURSOR TEST_CUR IS
SELECT * FROM EMP;
MY_CUR EMP%ROWTYPE;
BEGIN
OPEN TEST_CUR;
FETCH TEST_CUR INTO MY_CUR;
WHILE TEST_CUR%FOUND
LOOP
DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);
FETCH TEST_CUR INTO MY_CUR;
END LOOP;
CLOSE TEST_CUR;
END;
--
DECLARE
CURSOR TEST_CUR IS
SELECT * FROM EMP;
BEGIN
FOR MY_CUR IN TEST_CUR
LOOP
DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);
END LOOP;
END;
--
DECLARE
CURSOR TEST_CUR(V_SAL NUMBER) IS
SELECT *
FROM EMP
WHERE SAL V_SAL;
V_SAL1 NUMBER ;
BEGIN
V_SAL1 := 2000;
FOR MY_CUR IN TEST_CUR(V_SAL1)
LOOP
DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);
END LOOP;
END;
Oracle中的游標(biāo)分為顯示游標(biāo)和隱式游標(biāo)。
顯示游標(biāo):
顯示游標(biāo)是用cursor...is命令定義的游標(biāo),它可以對(duì)查詢(xún)語(yǔ)句(select)返回的多條記錄進(jìn)行處理;顯示游標(biāo)的操作:打開(kāi)游標(biāo)、操作游標(biāo)、關(guān)閉游標(biāo);
隱式游標(biāo):
隱式游標(biāo)是在執(zhí)行插入(insert)、刪除(delete)、修改(update)和返回單條記錄的查詢(xún)(select)語(yǔ)句時(shí)由PL/SQL自動(dòng)定義的。PL/SQL隱式地打開(kāi)SQL游標(biāo),并在它內(nèi)部處理SQL語(yǔ)句,然后關(guān)閉它。
顯式游標(biāo)
當(dāng)查詢(xún)返回結(jié)果超過(guò)一行時(shí) 就需要一個(gè)顯式游標(biāo) 此時(shí)用戶(hù)不能使用select into語(yǔ)句 PL/SQL管理隱式游標(biāo) 當(dāng)查詢(xún)開(kāi)始時(shí)隱式游標(biāo)打開(kāi) 查詢(xún)結(jié)束時(shí)隱式游標(biāo)自動(dòng)關(guān)閉 顯式游標(biāo)在PL/SQL塊的聲明部分聲明 在執(zhí)行部分或異常處理部分打開(kāi) 取出數(shù)據(jù) 關(guān)閉
使用游標(biāo)
這里要做一個(gè)聲明 我們所說(shuō)的游標(biāo)通常是指顯式游標(biāo) 因此從現(xiàn)在起沒(méi)有特別指明的情況 我們所說(shuō)的游標(biāo)都是指顯式游標(biāo) 要在程序中使用游標(biāo) 必須首先聲明游標(biāo)
聲明游標(biāo)
語(yǔ)法
CURSOR cursor_name IS select_statement;
在PL/SQL中游標(biāo)名是一個(gè)未聲明變量 不能給游標(biāo)名賦值或用于表達(dá)式中
例
DELCARE CURSOR C_EMP IS SELECT empno ename salary FROM emp WHERE salary ORDER BY ename; BEGIN
在游標(biāo)定義中SELECT語(yǔ)句中不一定非要表可以是視圖 也可以從多個(gè)表或視圖中選擇的列 甚至可以使用*來(lái)選擇所有的列
打開(kāi)游標(biāo)
使用游標(biāo)中的值之前應(yīng)該首先打開(kāi)游標(biāo) 打開(kāi)游標(biāo)初始化查詢(xún)處理 打開(kāi)游標(biāo)的語(yǔ)法是
OPEN cursor_name
cursor_name是在聲明部分定義的游標(biāo)名
例
OPEN C_EMP; 關(guān)閉游標(biāo)
語(yǔ)法
CLOSE cursor_name
例
CLOSE C_EMP; 從游標(biāo)提取數(shù)據(jù) 從游標(biāo)得到一行數(shù)據(jù)使用FETCH命令 每一次提取數(shù)據(jù)后 游標(biāo)都指向結(jié)果集的下一行 語(yǔ)法如下
FETCH cursor_name INTO variable[ variable ]
對(duì)于SELECT定義的游標(biāo)的每一列 FETCH變量列表都應(yīng)該有一個(gè)變量與之相對(duì)應(yīng) 變量的類(lèi)型也要相同
例
SET SERVERIUTPUT ON DECLARE v_ename EMP ENAME%TYPE; v_salary EMP SALARY%TYPE; CURSOR c_emp IS SELECT ename salary FROM emp; BEGIN OPEN c_emp; FETCH c_emp INTO v_ename v_salary; DBMS_OUTPUT PUT_LINE( Salary of Employee || v_ename || is || v_salary); FETCH c_emp INTO v_ename v_salary; DBMS_OUTPUT PUT_LINE( Salary of Employee || v_ename || is || v_salary); FETCH c_emp INTO v_ename v_salary; DBMS_OUTPUT PUT_LINE( Salary of Employee || v_ename || is || v_salary); CLOSE c_emp; END
這段代碼無(wú)疑是非常麻煩的 如果有多行返回結(jié)果 可以使用循環(huán)并用游標(biāo)屬性為結(jié)束循環(huán)的條件 以這種方式提取數(shù)據(jù) 程序的可讀性和簡(jiǎn)潔性都大為提高 下面我們使用循環(huán)重新寫(xiě)上面的程序
SET SERVERIUTPUT ON DECLARE v_ename EMP ENAME%TYPE; v_salary EMP SALARY%TYPE; CURSOR c_emp IS SELECT ename salary FROM emp; BEGIN OPEN c_emp; LOOP FETCH c_emp INTO v_ename v_salary; EXIT WHEN c_emp%NOTFOUND; DBMS_OUTPUT PUT_LINE( Salary of Employee || v_ename || is || v_salary); END
記錄變量
定義一個(gè)記錄變量使用TYPE命令和%ROWTYPE 關(guān)于%ROWsTYPE的更多信息請(qǐng)參閱相關(guān)資料
記錄變量用于從游標(biāo)中提取數(shù)據(jù)行 當(dāng)游標(biāo)選擇很多列的時(shí)候 那么使用記錄比為每列聲明一個(gè)變量要方便得多
當(dāng)在表上使用%ROWTYPE并將從游標(biāo)中取出的值放入記錄中時(shí) 如果要選擇表中所有列 那么在SELECT子句中使用*比將所有列名列出來(lái)要得多
例
SET SERVERIUTPUT ON DECLARE R_emp EMP%ROWTYPE; CURSOR c_emp IS SELECT * FROM emp; BEGIN OPEN c_emp; LOOP FETCH c_emp INTO r_emp; EXIT WHEN c_emp%NOTFOUND; DBMS_OUT PUT PUT_LINE( Salary of Employee ||r_emp ename|| is || r_emp salary); END LOOP; CLOSE c_emp; END;
%ROWTYPE也可以用游標(biāo)名來(lái)定義 這樣的話(huà)就必須要首先聲明游標(biāo)
SET SERVERIUTPUT ON DECLARE CURSOR c_emp IS SELECT ename salary FROM emp; R_emp c_emp%ROWTYPE; BEGIN OPEN c_emp; LOOP FETCH c_emp INTO r_emp; EXIT WHEN c_emp%NOTFOUND; DBMS_OUT PUT PUT_LINE( Salary of Employee ||r_emp ename|| is || r_emp salary); END LOOP; CLOSE c_emp; END;
帶參數(shù)的游標(biāo)
與存儲(chǔ)過(guò)程和函數(shù)相似 可以將參數(shù)傳遞給游標(biāo)并在查詢(xún)中使用 這對(duì)于處理在某種條件下打開(kāi)游標(biāo)的情況非常有用 它的語(yǔ)法如下
CURSOR cursor_name[(parameter[ parameter] )] IS select_statement;
定義參數(shù)的語(yǔ)法如下
Parameter_name [IN] data_type[{:=|DEFAULT} value]
與存儲(chǔ)過(guò)程不同的是 游標(biāo)只能接受傳遞的值 而不能返回值 參數(shù)只定義數(shù)據(jù)類(lèi)型 沒(méi)有大小
另外可以給參數(shù)設(shè)定一個(gè)缺省值 當(dāng)沒(méi)有參數(shù)值傳遞給游標(biāo)時(shí) 就使用缺省值 游標(biāo)中定義的參數(shù)只是一個(gè)占位符 在別處引用該參數(shù)不一定可靠
在打開(kāi)游標(biāo)時(shí)給參數(shù)賦值 語(yǔ)法如下
OPEN cursor_name[value[ value] ];
參數(shù)值可以是文字或變量
例
DECALRE CURSOR c_dept IS SELECT * FROM dept ORDER BY deptno; CURSOR c_emp (p_dept VARACHAR ) IS SELECT ename salary FROM emp WHERE deptno=p_dept ORDER BY ename r_dept DEPT%ROWTYPE; v_ename EMP ENAME%TYPE; v_salary EMP SALARY%TYPE; v_tot_salary EMP SALARY%TYPE; BEGIN OPEN c_dept; LOOP FETCH c_dept INTO r_dept; EXIT WHEN c_dept%NOTFOUND; DBMS_OUTPUT PUT_LINE ( Department: || r_dept deptno|| ||r_dept dname); v_tot_salary:= ; OPEN c_emp(r_dept deptno); LOOP FETCH c_emp INTO v_ename v_salary; EXIT WHEN c_emp%NOTFOUND; DBMS_OUTPUT PUT_LINE ( Name: || v_ename|| salary: ||v_salary); v_tot_salary:=v_tot_salary+v_salary; END LOOP; CLOSE c_emp; DBMS_OUTPUT PUT_LINE ( Toltal Salary for dept: || v_tot_salary); END LOOP; CLOSE c_dept; END;
游標(biāo)FOR循環(huán)
在大多數(shù)時(shí)候我們?cè)谠O(shè)計(jì)程序的時(shí)候都遵循下面的步驟
打開(kāi)游標(biāo)
開(kāi)始循環(huán)
從游標(biāo)中取值
那一行被返回
處理
關(guān)閉循環(huán)
關(guān)閉游標(biāo)
可以簡(jiǎn)單的把這一類(lèi)代碼稱(chēng)為游標(biāo)用于循環(huán) 但還有一種循環(huán)與這種類(lèi)型不相同 這就是FOR循環(huán) 用于FOR循環(huán)的游標(biāo)按照正常的聲明方式聲明 它的優(yōu)點(diǎn)在于不需要顯式的打開(kāi) 關(guān)閉 取數(shù)據(jù) 測(cè)試數(shù)據(jù)的存在 定義存放數(shù)據(jù)的變量等等 游標(biāo)FOR循環(huán)的語(yǔ)法如下
FOR record_name IN (corsor_name[(parameter[ parameter] )] | (query_difinition) LOOP statements END LOOP;
下面我們用for循環(huán)重寫(xiě)上面的例子
DECALRE CURSOR c_dept IS SELECT deptno dname FROM dept ORDER BY deptno; CURSOR c_emp (p_dept VARACHAR ) IS SELECT ename salary FROM emp WHERE deptno=p_dept ORDER BY ename v_tot_salary EMP SALARY%TYPE; BEGIN FOR r_dept IN c_dept LOOP DBMS_OUTPUT PUT_LINE ( Department: || r_dept deptno|| ||r_dept dname); v_tot_salary:= ; FOR r_emp IN c_emp(r_dept deptno) LOOP DBMS_OUTPUT PUT_LINE ( Name: || v_ename || salary: || v_salary); v_tot_salary:=v_tot_salary+v_salary; END LOOP; DBMS_OUTPUT PUT_LINE ( Toltal Salary for dept: || v_tot_salary); END LOOP; END;
在游標(biāo)FOR循環(huán)中使用查詢(xún)
在游標(biāo)FOR循環(huán)中可以定義查詢(xún) 由于沒(méi)有顯式聲明所以游標(biāo)沒(méi)有名字 記錄名通過(guò)游標(biāo)查詢(xún)來(lái)定義
DECALRE v_tot_salary EMP SALARY%TYPE; BEGIN FOR r_dept IN (SELECT deptno dname FROM dept ORDER BY deptno) LOOP DBMS_OUTPUT PUT_LINE( Department: || r_dept deptno|| ||r_dept dname); v_tot_salary:= ; FOR r_emp IN (SELECT ename salary FROM emp WHERE deptno=p_dept ORDER BY ename) LOOP DBMS_OUTPUT PUT_LINE( Name: || v_ename|| salary: ||v_salary); v_tot_salary:=v_tot_salary+v_salary; END LOOP; DBMS_OUTPUT PUT_LINE( Toltal Salary for dept: || v_tot_salary); END LOOP; END;
游標(biāo)中的子查詢(xún)
語(yǔ)法如下
CURSOR C IS SELECT * FROM emp WHERE deptno NOT IN (SELECT deptno FROM dept WHERE dname!= ACCOUNTING );
可以看出與SQL中的子查詢(xún)沒(méi)有什么區(qū)別
游標(biāo)中的更新和刪除
在PL/SQL中依然可以使用UPDATE和DELETE語(yǔ)句更新或刪除數(shù)據(jù)行 顯式游標(biāo)只有在需要獲得多行數(shù)據(jù)的情況下使用 PL/SQL提供了僅僅使用游標(biāo)就可以執(zhí)行刪除或更新記錄的方法
UPDATE或DELETE語(yǔ)句中的WHERE CURRENT OF子串專(zhuān)門(mén)處理要執(zhí)行UPDATE或DELETE操作的表中取出的最近的數(shù)據(jù) 要使用這個(gè)方法 在聲明游標(biāo)時(shí)必須使用FOR UPDATE子串 當(dāng)對(duì)話(huà)使用FOR UPDATE子串打開(kāi)一個(gè)游標(biāo)時(shí) 所有返回集中的數(shù)據(jù)行都將處于行級(jí)(ROW LEVEL)獨(dú)占式鎖定 其他對(duì)象只能查詢(xún)這些數(shù)據(jù)行 不能進(jìn)行UPDATE DELETE或SELECT FOR UPDATE操作
語(yǔ)法
FOR UPDATE [OF [schema ]lumn[ [schema ]lumn] [nowait]
在多表查詢(xún)中 使用OF子句來(lái)鎖定特定的表 如果忽略了OF子句 那么所有表中選擇的數(shù)據(jù)行都將被鎖定 如果這些數(shù)據(jù)行已經(jīng)被其他會(huì)話(huà)鎖定 那么正常情況下ORACLE將等待 直到數(shù)據(jù)行解鎖
在UPDATE和DELETE中使用WHERE CURRENT OF子串的語(yǔ)法如下
WHERE{CURRENT OF cursor_name|search_condition}
例
DELCARE CURSOR c IS SELECT empno salary FROM emp WHERE m IS NULL FOR UPDATE OF m; v_m NUMBER( ); BEGIN FOR r IN c LOOP IF r salary THEN v_m:=r salary* ; ELSEIF r salary THEN v_m:=r salary* ; ELSEIF r salary THEN v_m:=r salary* ; ELSE v_m:=r salary* ; END IF; UPDATE emp; SET m=v_m WHERE CURRENT OF c l; END LOOP; END
lishixinzhi/Article/program/Oracle/201311/16865
一 游標(biāo)是什么
游標(biāo)字面理解就是游動(dòng)的光標(biāo)。
用數(shù)據(jù)庫(kù)語(yǔ)言來(lái)描述:游標(biāo)是映射在結(jié)果集中一行數(shù)據(jù)上的位置實(shí)體,有了游標(biāo),用戶(hù)就可以訪問(wèn)結(jié)果集中的任意一行數(shù)據(jù)了,將游標(biāo)放置到某行后,即可對(duì)該行數(shù)據(jù)進(jìn)行操作,例如提取當(dāng)前行的數(shù)據(jù)等。
二 游標(biāo)的分類(lèi)
顯式游標(biāo)和隱式游標(biāo)
顯式游標(biāo)的使用需要4步:
1. 聲明游標(biāo)
CURSOR mycur(vartype number) is
select emp_no,emp_zc from cus_emp_basic
where com_no = vartype;
2. 打開(kāi)游標(biāo)
open mycur(000627)
注:000627是參數(shù)
3. 讀取數(shù)據(jù)
fetch mycur into varno, varprice;
4. 關(guān)閉游標(biāo)
close mycur;
三 游標(biāo)的屬性
oracle 游標(biāo)有4個(gè)屬性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT。
%ISOPEN判斷游標(biāo)是否被打開(kāi),如果打開(kāi)%ISOPEN等于true,否則等于false;
%FOUND %NOTFOUND判斷游標(biāo)所在的行是否有效,如果有效,則%FOUNDD等于true,否則等于false;
%ROWCOUNT返回當(dāng)前位置為止游標(biāo)讀取的記錄行數(shù)。
四 示例
set serveroutput on;
declare
varno varchar2(20);
varprice varchar2(20);
CURSOR mycur(vartype number) is
select emp_no,emp_zc from cus_emp_basic
where com_no = vartype;
begin
if mycur%isopen = false then
open mycur(000627);
end if;
fetch mycur into varno,varprice;
while mycur%found
loop
dbms_output.put_line(varno||','||varprice);
if mycur%rowcount=2 then
exit;
end if;
fetch mycur into varno,varprice;
end loop;
close mycur;
end;
PL/SQL記錄的結(jié)構(gòu)和C語(yǔ)言中的結(jié)構(gòu)體類(lèi)似,是由一組數(shù)據(jù)項(xiàng)構(gòu)成的邏輯單元。
PL/SQL記錄并不保存在數(shù)據(jù)庫(kù)中,它與變量一樣,保存在內(nèi)存空間中,在使用記錄時(shí)候,要首先定義記錄結(jié)構(gòu),然后聲明記錄變量。可以把PL/SQL記錄看作是一個(gè)用戶(hù)自定義的數(shù)據(jù)類(lèi)型。
set serveroutput on;
declare
type person is record
(
empno cus_emp_basic.emp_no%type,
empzc cus_emp_basic.emp_zc%type);
person1 person;
cursor mycur(vartype number)is
select emp_no,emp_zc from cus_emp_basic
where com_no=vartype;
begin
if mycur%isopen = false then
open mycur(000627);
end if;
loop
fetch mycur into person1;
exit when mycur%notfound;
dbms_output.put_line('雇員編號(hào):'||person1.empno||',地址:'||person1.empzc);
end loop;
close mycur;
end;
典型游標(biāo)for 循環(huán)
游標(biāo)for循環(huán)示顯示游標(biāo)的一種快捷使用方式,它使用for循環(huán)依次讀取結(jié)果集中的行數(shù)據(jù),當(dāng)form循環(huán)開(kāi)始時(shí),游標(biāo)自動(dòng)打開(kāi)(不需要open),每循環(huán)一次系統(tǒng)自動(dòng)讀取游標(biāo)當(dāng)前行的數(shù)據(jù)(不需要fetch),當(dāng)退出for循環(huán)時(shí),游標(biāo)被自動(dòng)關(guān)閉(不需要使用close)。使用游標(biāo)for循環(huán)的時(shí)候不能使用open語(yǔ)句,fetch語(yǔ)句和close語(yǔ)句,否則會(huì)產(chǎn)生錯(cuò)誤。
set serveroutput on;
declare
cursor mycur(vartype number)is
select emp_no,emp_zc from cus_emp_basic
where com_no=vartype;
begin
for person in mycur(000627) loop
dbms_output.put_line('雇員編號(hào):'||person.emp_no||',地址:'||person.emp_zc);
end loop;
end;
本文題目:oracle游標(biāo)怎么掃描 oracle查看游標(biāo)
轉(zhuǎn)載源于:http://www.chinadenli.net/article34/hpjdpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、面包屑導(dǎo)航、網(wǎng)站改版、微信小程序、關(guān)鍵詞優(yōu)化、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)