久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

PLSQL如何在Oracle中使用

146次閱讀
沒有評論

共計 3623 個字符,預計需要花費 10 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

PLSQL 如何在 Oracle 中使用?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Oracle 基本 PLSQL 的使用實例詳解

PL/SQL 塊是在 SQL 語言之上發展起來的一種應用,可以集中的處理各種復雜的 SQL 操 作。

組成:

DECLARE:  聲明部分  
BEGIN 
編寫主題  
EXCEPTION  捕獲異常  
END;

1. 一個簡單的 PL/SQL 塊

DECLARE 
 i number; 
BEGIN 
 I:=30; 
 DBMS_OUTPUT.put_line(I 的內容為: ||i); 
END;

此時,直接執行程序即可。

執行之后發現沒有任何的輸出。因為 Oracle 在系統設置中默認設置了輸出不顯示,如果要 顯示的話,輸入以下命令:
set serveroutput on; 如果是使用 Toad,則可以在 Desktop 中選擇 PLSQL,并打開 DBMS OUTPUT。

帶異常的語句塊

DECLARE 
 i number; 
BEGIN 
 i:=1/0; 
EXCEPTION 
 when ZERO_DIVIDE then 
 DBMS_OUTPUT.put_line( There is a Exception  
END;

注意:輸出字符串應該使用單引號。

2.PL/SQL 塊還可以接收用戶的輸入信息,例如:現在要求用戶輸入一個雇員編號,之后根據輸入的內容進行查詢,查詢雇員的姓名。

用戶的輸入信息使用“”完成

DECLARE 
 eno number; 
 en varchar(20); 
BEGIN 
 -- 輸入的信息保存在 eno 里  
 eno:=  
 -- 之后根據 eno 的值,對數據庫進行查詢操作。 
 select ename into en from emp where empno = eno; 
 DBMS_OUTPUT.put_line(編號為: ||eno|| 雇員的姓名為: ||en); 
EXCEPTION 
 WHEN no_data_found THEN 
 DBMS_OUTPUT.put_line( 沒有此雇員  
END;

3. 在以上的查詢中再進一步:可以根據雇員的編號查出姓名及其領導的姓名和所在的部門,進行顯示。

DECLARE 
 eno emp.empno%TYPE ; 
 en emp.ename%TYPE ; 
 mn emp.ename%TYPE ; 
 dn dept.dname%TYPE ; 
 dept dept %rowtype ; 
BEGIN 
 --  輸入的信息保存在  eno  里  
 eno :=  no ; 
 --  之后根據  eno  的值,對數據庫進行查詢操作  
 SELECT e.ename,m.ename,d.dname INTO en,mn,dn 
 FROM emp e,dept d,emp m 
 WHERE e.empno=7369 AND e.mgr=m.empno AND e.deptno=d.deptno ; 
 DBMS_OUTPUT.put_line(編號為:||eno|| 雇員的姓名為:||en) ; 
 DBMS_OUTPUT.put_line(編號為:||eno|| 雇員的上級姓名為:||mn) ; 
 DBMS_OUTPUT.put_line(編號為:||eno|| 雇員所在的部門:||dn) ; 
 DBMS_OUTPUT.put_line(dept.deptno) ; 
EXCEPTION 
 WHEN no_data_found THEN 
 DBMS_OUTPUT.put_line(沒有此雇員) ; 
END ;

說明:

? no_data_found 一種異常類型:沒有發現數據
? emp.empno%TYPE ;:表示以 emp 表中的 empno 字段的類型定義變量
? e.ename,m.ename,d.dname INTO en,mn,dn:一次可以同時放進去多個值
dept dept %rowtype ;  表示 dept 是一行數據
PL/SQL 之中也包含了:循環、分支等條件控制語句

4.Loop 循環(類似 do…while)

格式:

LOOP 
  循環的語句  ; 
EXIT WHEN  終止條件  ; 
  循環條件必須更改  ; END LOOP ;

例如:循環輸出 1~10。

DECLARE 
 countNum NUMBER ; 
BEGIN 
 -- 必須賦初值  
 countNum := 1 ; 
 LOOP 
 DBMS_OUTPUT.put_line(countNum =  ||countNum) ; 
 EXIT WHEN countNum 10 ; 
 countNum := countNum + 1 ; 
 END LOOP ; 
END ;

注意:count 關鍵字只能在 sql 語句中使用

此循環是先執行一次之后再進行判斷,執行結果到 11 結束循環

5.while 循環

格式:

WHILE(判斷循環的條件) 
LOOP  循環的語句  ; 
  循環條件的改變  ; 
END LOOP ;

使用此語句修改上面的程序:

DECLARE 
 countNum NUMBER ; 
BEGIN 
 -- 必須賦初值  
 countNum := 1 ; 
 WHILE(countNum 10) 
 LOOP 
 DBMS_OUTPUT.put_line(countNum =  ||countNum) ; 
 countNum := countNum + 1 ; 
 END LOOP ; 
END ;

此語句,是先判斷,如果滿足條件則繼續執行循環體,執行結果到 9 結束循環

6.for 循環

 格式: 
FOR  變量名稱  in  變量的初始值.. 結束值  
 LOOP 
  循環語句  ; 
 END LOOP ; 
修改上例: 
DECLARE 
 countNum NUMBER ; 
BEGIN 
 FOR countNum IN 1..10 
 LOOP 
 DBMS_OUTPUT.put_line(countNum =  ||countNum) ; 
 END LOOP ; 
END ;

此語句 countNum 大于等于 1 小于等于 10,最后輸出 1 -10

7.if 語句

條件判斷

格式:

IF  條件  THEN 
  滿足條件時,執行此語句  
END IF ;

例:

DECLARE 
 countNum NUMBER ; 
BEGIN 
 countNum := 11 ; 
 IF countNum 10 THEN 
 DBMS_OUTPUT.put_line(countNum =  ||countNum) ; 
 END IF ; 
END ;

條件語句,滿足條件,執行一次

8.IF…ELSE 語句

如果 IF 滿足了,則執行,否則執行 ELSE

例:

DECLARE 
 countNum NUMBER ; 
BEGIN 
 countNum := 1 ; 
 IF countNum 10 THEN 
 DBMS_OUTPUT.put_line(countNum =  ||countNum) ; 
 ELSE 
 DBMS_OUTPUT.put_line(條件不不成立) ; 
 END IF ; 
END ;

條件不滿足執行 else 后面的語句

9.if…elsif…else 語句

例:

DECLARE 
 countNum NUMBER ; 
BEGIN 
 countNum := 1 ; 
 IF countNum 10 THEN 
 DBMS_OUTPUT.put_line(countNum =  ||countNum); 
 ELSIF countNum 5 THEN 
 DBMS_OUTPUT.put_line( 值小于  5  
 ELSE 
 DBMS_OUTPUT.put_line( 條件不滿足  
 END IF ; 
END ;

多重判斷語句,滿足條件執行對應的跳轉

10.goto 語句

無條件跳轉語句

用于程序控制非條件跳至指定標簽 ???。不易控制和維護,慎用!

DECLARE 
 eno emp.empno%TYPE ; 
 sal emp.sal%TYPE ; 
BEGIN 
 eno :=  en ; 
 SELECT sal INTO sal FROM emp WHERE empno=eno ; 
 IF sal 3500 THEN 
 goto po1 ; 
 ELSIF sal 2000 THEN 
 goto po2 ; 
 ELSE 
 goto po3 ; 
 END IF; 
 -- 標簽  
  po1  DBMS_OUTPUT.put_line(高工資。。。) ; 
  po2  DBMS_OUTPUT.put_line(中等工資。。) ; 
  po3  DBMS_OUTPUT.put_line(低工資。。。) ; 
END;

關于 PLSQL 如何在 Oracle 中使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注丸趣 TV 行業資訊頻道了解更多相關知識。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計3623字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 长武县| 鹤山市| 阳春市| 五莲县| 灌南县| 和政县| 新源县| 南靖县| 张家港市| 宁城县| 卢龙县| 射阳县| 隆化县| 尼木县| 呼伦贝尔市| 平凉市| 河西区| 宣城市| 呼伦贝尔市| 保亭| 沧源| 彭州市| 土默特右旗| 融水| 新余市| 洛浦县| 衡水市| 鹤峰县| 元朗区| 崇礼县| 塘沽区| 三江| 定兴县| 霍邱县| 霍山县| 通化市| 宁晋县| 财经| 府谷县| 邻水| 新泰市|