關於此案例的詳細分析,請參看 《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 ...