pl/sql也是一種程式語言,叫做過程化sql語言(procedural language/sql)。pl/sql是oracle資料庫對sql語句的擴充套件。在普通sql語句的使用上增加了程式語言的特點,所以pl/sql可以用來編寫儲存過程、儲存函式、觸發器等等。 pl/sql是結構化sql,就是在標準sql中加入了if...else... for....等控制過程的sql。
pl/sql的缺點在於移植性不好,如果專案不再使用oracle來管理資料,那麼需要重新編寫語句。
下面舉乙個運用pl/sql語句的案列:編寫乙個儲存過程,並執行。
簡單說一下,儲存過程(stored procedure)的概念:在大型資料庫系統中,一組為了完成特定功能的sql語句集,儲存在資料庫中,經過一次編譯後不需要再進行二次編譯,使用者直接通過指定該過程的名字,如果有引數並給出引數來執行它。類似程式設計裡的函式的功能。
我們首先要安裝pl/sql developer工具,安裝成功並配置相關檔案後就可以使用了。使用同上面一樣的案例(這裡只是簡單演示,後面會重點使用)
塊是pl/sql的基本程式單元,編寫pl/sql其實就是編寫pl/sql塊。乙個塊可以實現乙個簡單的功能,而複雜的功能可能需要在乙個塊中巢狀其他若干塊。(感覺很像乙個函式段)
pl/sql 塊由一般由三個部分構成:定義部分,執行部分,例外處理部分。
注:定義部分是從declare開始的,該部分是可選的; 執行部分是從begin開始的,該部分是必須的; 例外處理部分是從exception開始的,該部分是可選的。
pl/sql可以編寫的主要內容有(注:oracle中的資料物件包括:索引、表、檢視、函式、包、過程、同義詞、序列、觸發器):
注釋
--命名規範這是單行注釋
/*這是多行注釋
*/
--儲存過程(stored procedure)的概念:在大型資料庫系統中,一組為了完成特定功能的sql語句集,儲存在資料庫中,經過一次編譯後不需要再進行二次編譯,使用者直接通過指定該過程的名字,如果有引數並給出引數來執行它。類似程式設計裡的函式的功能,但是有區別,因為oracle本身也具有函式。過程可以指定輸入引數(in)將執行環境需要的資料傳入,也可以指定輸出資料(out)將執行環境中的資料匯出到應用環境中。類似函式的引數和返回值。變數命名規範:以v_作為字首
v_variable
--常量命名規範:以c_作為字首
c_constant
--游標命名規範:以_cursor作為字尾
emp_cursor
--例外命名規範:以e_作為字首
e_error
函式用於返回特定的資料。當建立函式時,在函式頭部必須包含return子句,而在函式體內必須包含return語句返回的資料。使用create function來建立函式。
用於在邏輯上組合過程和函式。由包規範和包體兩部分組成。使用create package命令來建立包。
觸發器是在事件發生時隱式地自動執行的pl/sql程式塊,不能接收引數,不能被呼叫。當定義觸發器時,必須指定觸發的事件和觸發的操作。
常用的觸發事件包括:insert,update,delete語句。觸發操作實際就是乙個pl/sql塊。可以使用create trigger來建立觸發器。說明:觸發器可以維護資料庫的安全和一致性。
觸發器是很有用的資料物件,這裡先簡單了解。
標量的定義:亦稱「無向量」。有些物理量,只具有數值大小,而沒有方向,部分有正負之分。物理學中,標量(或作純量)指在座標變換下保持不變的物理量。用通俗的說法,標量是只有大小,沒有方向的量。
1)語法
2)案例
3)使用
4)使用%type型別
對於上面的pl/sql塊:如果員工的姓名超過了5字元的話,就會有錯誤。為了降低pl/sql程式的維護工作量,可以使用%type屬性定義變數。這樣,可以按照資料庫列來確定定義的變數的型別和長度。
復合變數是用於存放多個值的變數。
1)型別
2)pl/sql記錄
相當於高階語言中的結構體、類。
注意:當引用pl/sql記錄成員時,必須要加記錄變數作為字首(記錄變數.記錄成員)。
3)pl/sql表
相當於高階語言中的陣列。注意:在高階語言中陣列的下標不能為負數,而pl/sql的下標是可以為負數的,並且表元素的下標沒有限制。
注:sp_table_type是pl/sql表型別;emp.ename%type制定了表的元素的型別和長度;sp_table為pl/sql表變數;sp_table(0)表示下表為0的元素。如果去掉where條件:
1)概念
參照變數是用於存放數值指標的變數。是應用程式共享相同物件,從而降低占用的空間。分為:游標變數(ref cursor)和物件型別變數(ref obj_type)。
2)游標變數(ref cursor)
定義游標時,不需要指定相應的select語句。使用游標(open)時,需要制定select語句。
例項:使用pl/sql編寫乙個塊,可以輸入部門號,並顯示該部門所有員工姓名和工資。
第六天筆記
01 遍歷 items for item in my dict.items print item print key s,value s item 0 item 1 注意 如果迴圈遍歷字典的時候 你想需要字典的key和value 格式 for key位置,value位置 in my dict.ite...
雲計算筆記 第六天
1.vlan概述 a.什麼是vlan virtual lan 虛擬區域網 是物理裝置上連線的不受物理位置限制的使用者的乙個邏輯組。b.為什麼引入valn 1.交換機分割了衝突域,但是不能分割廣播域 2.隨著交換機埠數量的增多,網路中廣播數量增多,降低了網路的效率 3.為了分割廣播域,引入了vlan ...
python 第六天學習筆記
用 括起來,但是沒有體現對映關係,則為集合,集合即唯一,無序 set1 set2 set 1,2,3,4 set 工廠函式 裡可以是列表list 也可以是元組 tuple set1 set2 利用集合的唯一性去除列表中重複的元素 list1 1,2,3,4,3,2,1 list1 list set ...