複合資料型別和遊標
1. 利用遊標技術將‘95001’學生選修的所有課程名稱放進一個巢狀表變數中,然後遍歷該巢狀表並輸出該學員選修的課程名稱。
執行結果形式如下:
95001 選修的課程如下:
資料庫
數學
資訊系統
資料結構
PL/SQL 過程已成功完成。
SET SERVEROUTPUT ON
declare
v_cno sc.cno%type;
v_cname course.cname%type;
cursor c_cno is select cno from sc where sno='95001';
begin
open c_cno;
loop
fetch c_cno into v_cno;
exit when c_cno%notfound;
select cname into v_cname from course where v_cno=cno;
dbms_output.put_line(v_cname);
end loop;
close c_cno;
end;
2. 用帶引數的顯式遊標技術將使用者輸入學號的學生選修的所有課程成績放進一個VARRAY變數中,然後遍歷該VARRAY並輸出該學員選修的課程成績。
執行結果形式如下:
輸入 sno 的值: 95001
原值 10: v_sno:='&sno';
新值 10: v_sno:='95001';
95001 選修的課程成績如下:
58
85
70
92
0
PL/SQL 過程已成功完成。
SET SERVEROUTPUT ON
declare
v_grade sc.grade%type;
vsno sc.sno%type;
cursor v_sno(varry sc.sno%type) is select grade from sc where sno=varry;
begin
vsno:=&v_input;
open v_sno(vsno);
loop
fetch v_sno into v_grade;
exit when v_sno%notfound;
dbms_output.put_line(v_grade);
end loop;
close v_sno;
end;
3. 有這麼一張表t_t,他只有一個number(8)的欄位a,由於在建立表時忘記設定主鍵約束,導致表中有很多重複的記錄。請你編寫一個程式,利用遊標技術將表中重複的記錄保留一個,刪除其餘的。
create table t_t(a number(8));
insert into t_t values(1);
insert into t_t values(3);
insert into t_t values(6);
insert into t_t values(1);
insert into t_t values(6);
insert into t_t values(5);
insert into t_t values(3);
insert into t_t values(1);
insert into t_t values(1);
set serveroutput on
declare
xx t_t.a%type;
temp2 t_t.a%type;
cursor v_a is select A from t_t;
cursor v_aa(temp t_t.a%type) is select A from t_t where A=temp for update of A nowait;
begin
open v_a;
loop fetch v_a into xx;
exit when v_a%notfound;
open v_aa(xx);
fetch v_aa into temp2; //向後走一個記錄,如果沒有這條語句,所有的記錄就回被清空。有這條語句,那麼會保留跳過的這條記錄,而只刪除後面的那些重複的記錄。
loop fetch v_aa into temp2;
exit when v_aa%notfound;
delete from t_t where current of v_aa;
end loop;
close v_aa;
end loop;
close v_a;
end;
此題解方法採用兩個遊標,外遊標v_a從t_t中讀取所有資料資訊,然後從v_a中提取資訊,後根據提取的資訊從v_aa中開啟,v_aa是查詢資訊為temp的資料,然後將資訊儲存到v_aa中,此時我們只需在遊標v_aa中刪除重複的資訊(注意:第一條資訊以後的資訊都為重複資訊,需刪除。)這樣此題得到解決。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-739593/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Solidity-變數和資料型別[複合型別_1]Solid變數資料型別
- 複合型別(json)型別JSON
- 組合資料型別資料型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- 區別值型別資料和引用型別資料型別
- 【Python】組合資料型別Python資料型別
- 全網最適合入門的物件導向程式設計教程:42 Python常用複合資料型別-collections容器資料型別物件程式設計Python資料型別
- 什麼是組合資料型別?Python組合資料型別分為幾類?資料型別Python
- JAVA中基本資料型別和引用資料型別Java資料型別
- python組合資料型別(集合)Python資料型別
- 資料型別綜合應用資料型別
- hive複雜資料型別的用法Hive資料型別
- 02. 複合型別(Composite Types)型別
- 全網最適合入門的物件導向程式設計教程:34 Python的內建資料型別-Python常用複合資料型別:元組和命名元組物件程式設計Python資料型別
- Python標準資料型別-數字Python資料型別
- TS資料型別:型別別名/聯合型別/字面量型別/型別推論等綱要資料型別
- Go 複合型別之字典型別介紹Go型別
- PHP 資料型別之檢視和判斷資料型別PHP資料型別
- 第 10 節:複合型別 2: 切片型別
- 2020超休閒遊戲及其他型別遊戲的資料指標遊戲型別指標
- 《Go 語言程式設計》讀書筆記 (一)基礎型別和複合型別Go程式設計筆記型別
- 資料型別和運算子資料型別
- 第 10 節:複合型別-5. 指標 -- 指標與指標變數 -8. 多級指標型別指標變數
- Java 資料型別和 MySql 資料型別對應一覽表JavaMySQL 資料型別
- Day 7.5 資料型別總結 + 複製 淺複製 深複製資料型別
- 簡單資料型別和引用資料型別對應棧和堆示意圖資料型別
- typeScript 型別斷言、聯合型別和交叉型別(七)TypeScript型別
- AI人工智慧—資料標註的主要型別和標註注意事項AI人工智慧型別
- 第 10 節:複合型別 1:陣列型別陣列
- 第 10 節:複合型別 小練習!型別
- 資料型別: 資料型別有哪些?資料型別
- JS專題之資料型別和型別檢測JS資料型別
- JS 資料型別和堆疊JS資料型別
- python—資料型別和變數Python資料型別變數
- 資料型別和字符集資料型別
- Python常用的組合資料型別彙總Python資料型別
- 第 10 節:複合型別 1.5 二維陣列定義和使用型別陣列
- sizeof和strlen計算陣列型別和指標型別字串陣列型別指標字串
- 一起Talk IOS吧(第十回 複合型別中的指標)iOS型別指標