PL/SQL编程基础(一):PL/SQL语法简介(匿名PL/SQL块)
PL/SQL
?
- PL/SQL是Oracle在關系數據庫結構化查詢語言SQL基礎上擴展得到的一種過程化查詢語言。
- SQL與編程語言之間的不同在于,SQL沒有變量,SQL沒有流程控制(分支,循環)。而PL/SQL是結構化的和過程化的結合體,而且最為重要的是,在用戶執行多條SQL語句時,每條SQL語句都是逐一的發送給數據庫,而PL/SQL可以一次性將多條SQL語句一起發送給數據庫,減少網絡流量
| SQL執行??????????? | PL/SQL執行 |
| ? |
?
- 匿名Pl/SQL塊
- – 動態構造,只能執行一次
- 一次性完成,沒有名字
- 存儲過程,函數,觸發器
- 給它一個名字,保存到數據庫,可以反復使用,調用.
- – 存儲在數據庫中編譯過的代碼,可以反復執行。
?
PL/SQL語法結構
語法:
| DECLARE -- 聲明部分,例如:定義變量、常量、游標。 BEGIN -- 程序編寫、SQL語句 EXECTPION -- 處理異常 END ; / |
?
說明:
| 聲明部分(DECLARE) | 包含變量定義、用戶定義的PL/SQL類型、游標、引用的函數或過程; |
| 執行部分(BEGIN) | 包含變量賦值、對象初始化、條件結構、迭代結構、嵌套的PL/SQL匿名塊,或是對局部或存儲PL/SQL命名塊的調用; |
| 異常部分(EXCEPTION) | 包含錯誤處理語句,該語句可以像執行部分一樣使用所有項; |
| 結束部分(END) | 程序執行到END表示結束,分號用于結束匿名塊,而正斜杠(/)執行塊程序; |
默認情況下系統輸出顯示被關閉的,需要設定 SET SERVEROUTPUT ON
匿名Pl/SQL塊
– 動態構造,只能執行一次
一次性完成,沒有名字
范例
| 編寫不做任何工作的PL/SQL塊 |
| BEGIN NULL ; END ; / |
| 最簡單的循環PL/SQL匿名塊,null表示什么也沒干 |
| BEGIN for i in 1..10 loop null; end loop; ??? END; ?? / |
| 編寫HELLO WORD |
| SQL> BEGIN ?2?DBMS_OUTPUT.put_line('HELLO,WENDY'); ?3?END; ?4?/ HELLO,WENDY ? PL/SQL procedure successfully completed. |
| 匿名PL/SQL塊,循環顯示2遍HELLOW,WENDY |
| BEGIN For I in 1..2 loop DBMS_OUTPUT.put_line('HELLO,WENDY'); End loop; ?END; ?? / |
| 匿名PL/SQL塊,循環插入數據 SQL> insert into t select rownum,'x' from dba_objects where rownum<101; 能用SQL解決的就不要用PL/SQL PL/SQL會消耗資源,效率很低 |
| BEGIN ?for i in 1..100 loop insert into t values(i,'w'); end loop; ?END; ?/ |
| 編寫一個簡單的PL/SQL程序 := 為變量賦值 |
| DECLARE v_num NUMBER ;??? -- 定義一個變量v_num BEGIN v_num := 30 ;???????? -- 設置v_num的內容 DBMS_OUTPUT.put_line('V_NUM變量的內容是:' || v_num) ; END ; / |
| 編寫PL/SQL塊,輸入一個雇員編號,而后取得指定的雇員姓名 |
| DECLARE v_eno??? NUMBER ; v_ename??? VARCHAR2(10) ; BEGIN v_eno := &empno ;??????? -- 由鍵盤輸入雇員編號 SELECT ename INTO v_ename FROM emp WHERE empno=v_eno ; DBMS_OUTPUT.put_line('編號為:' || v_eno || '雇員的名字為:'|| v_ename) ; END ; / |
?
?
轉載于:https://www.cnblogs.com/thescentedpath/p/introducePLSQL.html
總結
以上是生活随笔為你收集整理的PL/SQL编程基础(一):PL/SQL语法简介(匿名PL/SQL块)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想要快速搭建开发测试环境?这么做就可以!
- 下一篇: ajax实现highchart与数据库数