![PLSQL編程基礎(chǔ)總結(jié)(共9頁)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/23/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f39/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f391.gif)
![PLSQL編程基礎(chǔ)總結(jié)(共9頁)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/23/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f39/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f392.gif)
![PLSQL編程基礎(chǔ)總結(jié)(共9頁)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/23/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f39/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f393.gif)
![PLSQL編程基礎(chǔ)總結(jié)(共9頁)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/23/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f39/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f394.gif)
![PLSQL編程基礎(chǔ)總結(jié)(共9頁)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/23/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f39/a7d0b3a2-be5d-4e02-ba16-ca1fde1e0f395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、PL/SQL編程基礎(chǔ)總結(jié)1 PL/SQL簡介PL/SQL是一種程序語言,被稱作過程花SQL語言(Procedural Language/SQL),是oracle數(shù)據(jù)庫對SQL語言的擴展1.1 優(yōu)點:具有更高,更高效,更可控制等特點1.2 定義:Oracle是一種使用比較廣泛的關(guān)系型數(shù)據(jù)庫,而用來訪問關(guān)系型數(shù)據(jù)庫的語言稱為“結(jié)構(gòu)化語言”,即SQL而PL/SQL=SQL+邏輯,在SQL語言的基礎(chǔ)上,增加了編程語言的特性2 PL/SQL程序塊聲明部分 declare .程序段開始 begin異常處理exception.程序段結(jié)束 end;2.1 注意:分號:declare,begin和excepti
2、on后沒有分號,而end以及所有SQL語句和PL/SQL語句都必須以分號結(jié)束3 變量用來實現(xiàn)信息的保持和結(jié)構(gòu)3.1 定義變量在declare和begin之間語法:declarevariable_name type not null:=value3.2 變量的命名規(guī)則1、 以英文字母開始,包括字母,數(shù)字,$,下劃線(_)2、 長度不可超過30個字符3、 變量名中不可有空格4、 變量名不能使用關(guān)鍵字命名3.3 作用域變量聲明對于塊是本地的,當(dāng)塊完成后,變量也就不存在了,即變量聲明的作用域僅限于當(dāng)前程序庫,出了當(dāng)前程序就無效了3.4 給變量賦值3.4.1 :=3.4.2 select into3.4
3、.2.1 語法:select select_list -檢索出來的結(jié)果集字段into varibale_name,variable_name表示想要賦值的變量名from table_namewhere condition 注意1、 查詢只能返回一條記錄,多條或0條都會產(chǎn)生異常2、 into語句必須在select和from子句之間3、 into后需要賦值的變量的數(shù)據(jù)類型必須和select子句中檢索出的數(shù)據(jù)類型一致4、 into需要賦值的變量個數(shù)需要和select查詢出的字段數(shù)一致3.5 從鍵盤接受數(shù)據(jù)變量 := &變量名;&表示從鍵盤接受數(shù)據(jù)3.6 以列名或變量名作為前綴來聲明變量
4、變量名 表名.列名%TYPE變量名 其他變量名%TYPE3.7 以某張的完整行來聲明變量變量名 表名%rowtype;(這個類似集合,數(shù)組)使用時用:.變量.字段3.8 PL/SQL注意事項1、 全部保留字,Oracle的內(nèi)置函數(shù),程序包以及用戶定義的數(shù)據(jù)類型都用大寫2、 每行只寫一條語句,逗號后面以及運算符的前后都應(yīng)加空格3、 變量名稱都要使用有意義的名稱命名4、 命名使用“_”的連接方式,而不是用大小寫混合方式5、 變量前最后加上前綴,以表示該變量的數(shù)據(jù)類型,作用范圍等a) 當(dāng)定義變量時,建立用v_作為前綴b) 當(dāng)定義常量時,建議用c_作為前綴c) 當(dāng)定義異常時,建議用e_作為前綴-升級變
5、量的使用,實現(xiàn)根據(jù)商品ID查詢商品名稱,商品價格,上架時間,庫存,并聯(lián)機輸出 declare v_id number := &ID;-接受用戶輸入的商品ID v_name es_%TYPE;-商品名稱 v_price es_product.price%TYPE;-商品價格 v_saledate es_product.saledate%TYPE;-上架時間 v_stock_count es_product.stockcount%TYPE;-庫存量 begin select name,price,saledate,stockcount into v_name,v_price
6、,v_saledate,v_stock_count from es_product where ID = v_id; dbms_output.put_line(v_name | | v_price | | v_saledate | | v_stock_count); end; -繼續(xù)升級變量的使用,實現(xiàn)根據(jù)商品ID查詢商品名稱,商品價格,上架時間,庫存,并聯(lián)機輸出 declare v_id number := &ID;-接受用戶輸入的商品ID v_er_pro es_product%rowtype;-表的完整行變量 begin select name,price,saledate,stockc
7、ount into v_er_,v_er_pro.price,v_er_pro.saledate,v_er_pro.stockcount from es_product where ID = v_id; dbms_output.put_line(v_er_ | | v_er_pro.price | |v_er_pro.saledate | | v_er_pro.stockcount); end;4 編寫SQL代碼的方法(用PL/SQL Developer工具)4.1 SQL windows4.2 command windows以“/”表示運行如果程序有內(nèi)容輸出查
8、看結(jié)果:set serveroutput on;然后再寫SQL程序,“”運行SQL windows:-使用的數(shù)據(jù)表select * from es_product;select * from es_user;select * from es_order;select * from es_orderdetail;-使用變量,實現(xiàn)根據(jù)商品檢索商品庫存declare v_id number := &ID;-接受用戶輸入的商品ID v_stock_count number; -商品的庫存量begin select stockcount INTO v_stock_count from es_produc
9、t where ID = v_id;-這里一定要分號 dbms_output.put_line(v_stock_count);end;command windowsdeclare v_id number := &ID;-接受用戶輸入的商品ID v_stock_count number; -商品的庫存量begin select stockcount INTO v_stock_count from es_product where ID = v_id;-這里一定要分號 dbms_output.put_line(v_stock_count);end;5 IF結(jié)構(gòu)if 條件 THEN如果滿足條件執(zhí)行代
10、碼塊-代碼塊end if5.1 語法結(jié)構(gòu)if 條件 THEN如果滿足條件執(zhí)行代碼塊-代碼塊1else-代碼塊2end if5.2 語法結(jié)構(gòu)2if 條件 THEN如果滿足條件執(zhí)行代碼塊-代碼塊1elsif-代碼塊2else-代碼塊3end if5.3 語法結(jié)構(gòu)3-更新庫存量:購買商品時declare v_id es_product.id%TYPE := &id; v_stock_count es_product.stockcount%TYPE;begin -查詢到了商品庫存量 select stockcount into v_stock_count from es_product where i
11、d = v_id; -根據(jù)庫存進行判斷,如果庫存0購買,反之,不能購買 if v_stock_count 0 then update es_product set stockcount = stockcount - 1 where id = v_id; commit; dbms_output.put_line(商品庫存已經(jīng)更新); -elsif else dbms_output.put_line(商品庫存為0無法更新); end if;end;6 casecase when 值=表達式1 then代碼段1when值=表達式2 then代碼段.else代碼段3end casecase值when
12、表達式1 then代碼段1when 表達式2 then代碼段.else代碼段3end case-根據(jù)商品ID查詢商品價格,價格1000輸出“很貴”,價格在100-1000之間的顯示“一般”,價格在100一下的顯示“便宜”declare v_id number := &ID; v_name varchar(20); v_price es_product.price%TYPE;begin select price into v_price from es_product where id = v_id; case when v_price 1000 then v_name := 價格很貴; whe
13、n v_price 100 then v_name := 一般; else v_name := 便宜; end case; dbms_output.put_line(v_name); end;declare v_id es_order.id%TYPE := &ID; v_status es_order.status%TYPE; v_status_name varchar2(20);-狀態(tài)名字begin select status into v_status from es_order where id = v_id; case when v_status = 1 then v_status_n
14、ame :=訂單已提交; when v_status = 2 then v_status_name := 已付款; when v_status = 3 then v_status_name := 已完成; else v_status_name := 未知狀況; end case; dbms_output.put_line(v_status_name); end;declare v_id es_order.id%TYPE := &ID; v_status es_order.status%TYPE; v_status_name varchar2(20);-狀態(tài)名字begin select stat
15、us into v_status from es_order where id = v_id; case v_status when 1 then v_status_name :=訂單已提交; when 2 then v_status_name := 已付款; when 3 then v_status_name := 已完成; else v_status_name := 未知狀況; end case; dbms_output.put_line(v_status_name); end;7 循環(huán)控制loop -代碼塊exit when conditionend loop7.1 LOOP7.1.1
16、弊端:1、 循環(huán)可讀性差,必須通過exit退出循環(huán)2、 exit容易忘記,或者循環(huán)條件不正確可能早餐死循環(huán)for 循環(huán)變量 in 循環(huán)開始.循環(huán)結(jié)束 loop-代碼塊end loop7.2 for循環(huán)適用不知道具體循環(huán)次數(shù)的情況while 循環(huán)條件 loop-代碼塊end loop7.3 while循環(huán)適用于不知道具體循環(huán)次數(shù)的情況-使用循環(huán)初始化商品類別信息-loop循環(huán)declare v_id es_sort.id%TYPE := 5; v_sortname es_sort.sortname%TYPE := 類別; v_fatherid es_sort.fatherid%TYPE :=0;
17、 begin loop insert into es_sort values(v_id,v_sortname|v_id,v_fatherid); v_id := v_id + 1; exit when v_id = 8; end loop; commit; dbms_output.put_line(插入成功);end;-for循環(huán)declare v_id es_sort.id%TYPE; v_sortname es_sort.sortname%TYPE := 類別; v_fatherid es_sort.fatherid%TYPE := 0;begin for v_id in 9.11 loo
18、p insert into es_sort values(v_id,v_sortname|v_id,v_fatherid); end loop; commit;-忘記提交了 dbms_output.put_line(插入成功);end;-while循環(huán)declare v_id es_sort.id%TYPE := 12; v_sortname es_sort.sortname%TYPE := 類別; v_fatherid es_sort.fatherid%TYPE := 0;begin while v_id = 12 and v_id 0 then update es_product set
19、stockcount = stockcount - 1 where id = v_id; commit; dbms_output.put_line(數(shù)據(jù)庫中更新成功); else dbms_output.put_line(數(shù)據(jù)庫中已經(jīng)沒有庫存了); end if; exception when no_data_found then dbms_output.put_line(數(shù)據(jù)庫中不存在該商品); rollback; when too_many_rows then dbms_output.put_line(數(shù)據(jù)庫中存在多條數(shù)據(jù)); rollback; when others then dbms_output.put_line(發(fā)生其他錯誤); rollback;end;8.3 自定義異常8.3.1 語法declare v_id es_product.id%TYPE := &ID; e_no_result exception;begin delete es_order where id=v_id; if SQL%NOTFOUND then-SQL%NOTFOUND表示前面的SQL語句沒有刪除任何數(shù)據(jù) raise e_no_result; end if; exception when e_no_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)城市中的智能化垃圾分類與處理
- 物流園區(qū)中的多式聯(lián)運組織與管理
- 國慶節(jié)手表銷售活動方案
- 臨時用電專項施工方案編制
- 現(xiàn)代辦公環(huán)境下的溝通技巧與團隊合作
- 生產(chǎn)中的柔性管理策略及實踐應(yīng)用
- 學(xué)生國慶節(jié)游玩活動方案
- Unit 1 Sports and Game Lesson 3(說課稿)-2024-2025學(xué)年人教新起點版英語四年級上冊
- 25 王戎不取道旁李(說課稿)-2024-2025學(xué)年統(tǒng)編版語文四年級上冊
- 2024年六年級品社下冊《可怕的物種入侵》說課稿2 蘇教版
- 2025年三人合伙投資合作開店合同模板(三篇)
- 2025年合資經(jīng)營印刷煙包盒行業(yè)深度研究分析報告
- 天津市五區(qū)縣重點校2024-2025學(xué)年高一上學(xué)期1月期末聯(lián)考試題 化學(xué) 含答案
- 吉林省吉林市普通中學(xué)2024-2025學(xué)年高三上學(xué)期二模試題 生物 含答案
- 人教版高一數(shù)學(xué)上冊期末考試試卷及答案
- 安全學(xué)原理第2版-ppt課件(完整版)
- 機動車登記證書
- 彈性力學(xué)第十一章彈性力學(xué)的變分原理
- 鉭鈮礦開采項目可行性研究報告寫作范文
- 小升初數(shù)學(xué)銜接班優(yōu)秀課件
- 出口食品生產(chǎn)企業(yè)備案自我評估表
評論
0/150
提交評論