Oracle 基礎溫習7 之 遊標
-
CREATE TABLE Student
-
(Sno CHAR(9) PRIMARY KEY,
-
Sname CHAR(20) NOT NULL,
-
Ssex CHAR(4),
-
Sage SMALLINT,
- Sdept CHAR(20)) tablespace gaospace;
如上面student表的定義。
遊標定義: cursor 遊標名 is select 語句;
-
declare
-
v_student_name char(20);
-
Cursor c_student is select sname from student;
-
begin
-
open c_student;
-
loop
-
fetch c_student into v_student_name;
-
exit when c_student%notfound;
-
dbms_output.put_line(v_student_name);
-
end loop;
-
close c_student;
- end;
發現在記事本里面敲入上面的程式碼,然後再貼上複製到sqlplus上面去,報錯:
*
第 3 行出現錯誤:
ORA-06550: 第 3 行, 第 1 列:
PLS-00103: 出現符號 "?"在需要下列之一時:
begin function
pragma procedure subtype type
current cursor delete
exists prior
符號 "?" 被忽略。
ORA-06550: 第 4 行, 第 1 列:
PLS-00103: 出現符號 "?"在需要下列之一時:
begin function
pragma procedure subtype type
current cursor delete
exists prior
如果是 一個字一個字在sqlplus裡面敲入,可以正常輸出:
-
SQL> declare
-
2 v_student_name char(20);
-
3 cursor c_student is select sname from student;
-
4 begin
-
5 open c_student;
-
6 loop
-
7 fetch c_student into v_student_name;
-
8 exit when c_student%notfound;
-
9 dbms_output.put_line(v_student_name);
-
10 end loop;
-
11 close c_student;
-
12 end;
-
13 /
-
- PL/SQL 過程已成功完成。
但是沒有結果輸出。查詢了顯示器,需要如下設定:
- set serveroutput on;
然後再執行:
-
SQL> declare
-
2 v_student_name char(20);
-
3 cursor c_student is select sname from student;
-
4 begin
-
5 open c_student;
-
6 loop
-
7 fetch c_student into v_student_name;
-
8 exit when c_student%notfound;
-
9 dbms_output.put_line(v_student_name);
-
10 end loop;
-
11 close c_student;
-
12 end;
-
13 /
-
趙偉
-
張力虹
-
徐秀美
-
劉平
-
姚家全
-
上關美雲
-
-
PL/SQL 過程已成功完成。
-
- SQL>
題二:
如果student表裡面有人的年齡小於18歲,將其更改為18歲。
- INSERT INTO Student VALUES(\'0208\',\'趙偉\',\'男\',10,\'cs\');
-
SQL> declare
-
2 cursor v_age is select sage from student
-
3 for update of sage;
-
4 begin
-
5 for v_record in v_age loop
-
6 if v_record.sage<18 then
-
7 update student set sage=18 where current of v_age;
-
8 end if;
-
9 end loop;
-
10 commit;
-
11 end;
-
12 /
-
-
PL/SQL 過程已成功完成。
-
-
SQL> select * from student;
-
-
SNO SNAME SSEX SAGE
-
------------------ ---------------------------------------- -------- ----------
-
SDEPT
-
----------------------------------------
-
0201 趙偉 男 18
-
cs
-
-
0202 張力虹 男 19
-
is
-
-
0203 徐秀美 女 21
-
is
-
-
-
SNO SNAME SSEX SAGE
-
------------------ ---------------------------------------- -------- ----------
-
SDEPT
-
----------------------------------------
-
0204 劉平 男 20
-
cs
-
-
0205 姚家全 男 19
-
cs
-
-
0206 上關美雲 女 23
-
ma
-
-
-
SNO SNAME SSEX SAGE
-
------------------ ---------------------------------------- -------- ----------
-
SDEPT
-
----------------------------------------
-
0208 趙偉 男 18
- cs
可以看出趙偉的年齡已經改為 18了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26435490/viewspace-1077594/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 基礎溫習3Oracle
- oracle 基礎溫習之 儲存過程Oracle儲存過程
- oracle 基礎溫習8 包Oracle
- Oracle開發基礎-遊標Oracle
- SQL Server基礎之遊標SQLServer
- oracle 基礎溫習6 格式化Oracle
- Oracle學習筆記整理之遊標篇Oracle筆記
- 【重溫基礎】7.時間物件物件
- rac基礎知識溫習(1)
- Oracle之PL/SQL基礎學習OracleSQL
- Oracle 基礎溫習1 建立表空間和新使用者Oracle
- Oracle遊標Oracle
- Oracle 遊標Oracle
- Oracle之PL/SQL基礎學習之二OracleSQL
- Oracle遊標示例Oracle
- Oracle遊標大全Oracle
- MongoDB之遊標MongoDB
- JavaScript學習7:DOM基礎JavaScript
- Oracle 基礎溫習2 查詢預設表空間及其下面的tableOracle
- oracle遊標的一些基礎問題Oracle
- Oracle動態遊標Oracle
- Oracle基礎之function使用OracleFunction
- Sqlserver遊標複習SQLServer
- opencv學習之基礎OpenCV
- 【重溫基礎】20.事件事件
- 【重溫基礎】8.字串字串
- Oracle遊標共享,父遊標和子游標的概念Oracle
- javascript之溫習閉包JavaScript
- 【git學習四】git基礎之git為專案打標籤Git
- Oracle基礎學習筆記Oracle筆記
- oracle cursor遊標迴圈比較遊標元素是否相同Oracle
- oracle遊標使用全解Oracle
- Oracle 遊標使用全解Oracle
- [轉]oracle 遊標使用大全Oracle
- Oracle 遊標使用大全(轉)Oracle
- Oracle遊標使用大全(轉)Oracle
- Oracle之procedure的基礎使用Oracle
- [06]HTML基礎之表單標籤HTML