儲存過程中用到的各種函式學習(一)

2021-08-05 20:51:18 字數 2631 閱讀 2655

%type是用來宣告乙個變數和指定表的column一樣的資料型別
例子如下:   需要加.哦
v_empname  emp.ename%type;   

這樣一來v_empname和emp.ename的型別一樣了

%rowtype用來宣告乙個和表中記錄一樣
例子

v_emp emp%rowtype;

這樣一來

v_emp擁有了emp表中每一列的屬性,沒有資料只有屬性,就是列名和列的型別

使用依舊是加.
如果看不懂我的,可以檢視以下的鏈結,有更加詳細的解釋
大神講解%type和%rowtype

在現在count(1)是指搜尋第一列的數量

count(*)是指搜尋所有列資料個數

理論上第一種快一些,但是count早就優化了,其實使用這兩個差別不大(非古董級別的資料庫),一般都是先索引了吧。

嫌我說不清的點這裡

還有這裡

nvl是非空函式,如果表示式1是空,那就返回表示式2的值,如果都為null,那麼返回null,表示式1和表示式2必須為同乙個資料型別

另外它的進化版nvl2(表示式1,表示式2,表示式3)

如果表示式1為空,那麼返回表示式3的值,否則返回表示式2的值;有點像a>b?a:b

lpad( string, padded_length, [ pad_string ] )

string

準備被填充的字串;

padded_length

填充之後的字串長度,也就是該函式返回的字串長度,如果這個數量比原字串的長度要短,lpad函式將會把字串擷取成從左到右的n個字元;

pad_string

填充字串,是個可選引數,這個字串是要貼上到string的左邊,如果這個引數未寫,lpad函式將會在string的左邊貼上空格。

lpad('abcde',10,'x')  lpad('abcde',10,'oq')

***xxabcde oqoqoabcde

與lpad函式對應的是rpad函式:

rpad

(string,padded_length,[pad_string]) 從右填充

||  是字串累加  相當於sqlserver  「+」

'good ' || 'morning!' ==》good morning!

如'%a%'就代表乙個字串只要包含字母a就符合

條件'%a'則代表乙個字串需要以字母a結尾才符合條件

'a%'就是以a開頭的字串了

like "%王",則表示前面可能有n個字元。但是最後乙個字元是"王"字的串。如:小王。

芙蓉王。等

基本語法是:

select … from tablename

start with 條件1

connect by 條件2

where 條件3;

例:select * from table

start with org_id = 『hbhqfwgwpy』

connect by prior org_id = parent_id; --prior org_id指的是前乙個節點

其中:條件1是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。

條件2是連線條件,其中用

prior表示上一條記錄

,比如 

connect by

prior org_id = parent_id

;就是說

上一條記錄的org_id 是本條記錄的parent_id

,即本記錄的父親是上一條記錄。

條件3是過濾條件,用於對返回的所有記錄進行過濾。

具體詳細用法看這裡大神的講解

簡單用法看這裡

max 函式返回一列中的最大值。null 值不包括在計算中。

union 操作符用於合併兩個或多個 select 語句的結果集。

請注意,union 內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同。

列出的資料如果有重複就只會輸出一次,如果要重複的輸出則使用union all操作符

oracle的commit就是提交資料(這裡是釋放鎖不是鎖表),在未提交前你前面的操作更新的都是記憶體,沒有更新到物理檔案中。

執行commit從使用者角度講就是更新到物理檔案了,事實上commit時還沒有寫date file,而是記錄了redo log file,要從記憶體寫到data物理檔案,需要觸發檢查點,由dbwr這個後台程序來寫,這裡內容有點多的,如果不深究的話你就理解成commit即為從記憶體更新到物理檔案。

鎖有很多種,一般我們關注的都是dml操作產生的,比如insert,delete,update,select...for update都會同時觸發表級鎖和行級鎖

insert以後commit之前是鎖表的狀態,其他事務無法對該錶進行操作。

儲存過程中用到的年,月,周的函式

儲存過程中用到的年,月,周的函式 2007 06 01 09 13 周 dateadd wk,datediff wk,0,getdate 1 dateadd wk,datediff wk,0,getdate 6 月 dateadd mm,datediff mm,0,getdate 0 dateadd...

IOS 開發中用到的數學函式

1 三角函式 double sin double 正弦 double cos double 余弦 double tan double 正切 2 反三角函式 double asin double 結果介於 pi 2,pi 2 double acos double 結果介於 0,pi double at...

GitBook部署過程中用到的一些指令

2 安裝gitbook 首先設定npm上網 npm config set proxy http user password proxy host proxy port注1 在配置時輸入的配置命令列都可以在c盤user目錄下的使用者名稱目錄中的.npmrc找到 用notepad開啟 注2 執行npm指...