Oracle資料庫游標案例講解與原始碼 2

2021-12-30 11:34:58 字數 1109 閱讀 9104

關於此案例的詳細分析,請參看 《oracle資料庫游標案例講解與原始碼》一文

案例要求:

利用游標轉換兩張表的資料。

首先,將滿足以下三個條件的資料插入到一張新錶(productinfo_tmp)中 :

<1>**大於1000

<2>產地為「中國」或「杭州」

<3> 商品型別為「家電」或「電子產品」

然後,在新錶(productinfo_tmp)中進行如下兩個操作:

<1>**大於2000的下調5%

<2>商品型別編號轉換為商品型別名稱

由於《oracle資料庫游標案例講解與原始碼》一文中的解決方案用到了子查詢與游標,將會造成更大的系統開銷,造成查詢速度變慢,因此可以講解決方案更改為下面方式:

(建表語句與插入資料,請參照《oracle資料庫游標案例講解與原始碼》一文)

create or replace procedure prcd_1

isbegin

--清空臨時表中的原有記錄

delete from productinfo_tmp;

--把符合要求的資料查詢出來,插入新的資料並轉換category欄位

insert into productinfo_tmp (pid,pname,price,quanty,category,desperation,origin)

select pid,pname,price,quanty,category,desperation,origin from productinfo,categoryinfo

where productinfo.category=categoryinfo.cid

and price>1000 and origin in('中國','杭州') and cname in ('電子產品','家電');

--產品**下調

update productinfo_tmp set productinfo_tmp.price=productinfo_tmp.price*0.95

where productinfo_tmp.price>2000;

commit;

end prcd_1;

這樣既避免了子查詢,又不用使用游標,可以很大的提高儲存過程的執行效率!

資料庫游標(Oracle)

游標是sql的乙個記憶體工作區,由系統或使用者以變數形式定義。游標的作用是用於臨時儲存從資料庫中提取的資料塊。為什麼要用游標?資料庫的資料是存放在磁碟中的,游標是把資料從磁碟中調到計算機記憶體中進行處理,最後將處理結果顯示出來或者最終寫回資料庫,這樣可以提高資料處理的效率,因為頻繁的磁碟資料交換會降...

oracle 游標 講解

plsql 迴圈游標 cursor 的一點心得體會 set serveroutput on 列印輸出資訊,預設是false declare 申明變數,分號結束 v pages number v numberperpage number v totalpages number v cur sys re...

Oracle資料庫之游標

一 準備表和資料 1 建立表 create table emp empno varchar2 32 ename varchar2 32 job varchar2 32 sal varchar2 32 2 新增資料 insert into emp empno,ename,job,sal values ...