1. 程式人生 > >儲存過程中用到的各種函式學習(一)

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

1.%type和%rowtype

%type是用來宣告一個變數和指定表的column一樣的資料型別
例子如下:   需要加.哦
v_EmpName  emp.ename%TYPE;   
這樣一來v_EmpName和emp.ename的型別一樣了
%ROWTYPE用來宣告一個和表中記錄一樣
例子
v_emp emp%ROWTYPE;
這樣一來
v_emp擁有了emp表中每一列的屬性,沒有資料只有屬性,就是列名和列的型別
使用依舊是加.
如果看不懂我的,可以檢視以下的連結,有更加詳細的解釋

2.count(1)和count(*)的區別

在現在count(1)是指搜尋第一列的數量count(*)是指搜尋所有列資料個數
理論上第一種快一些,但是count早就優化了,其實使用這兩個差別不大(非古董級別的資料庫),一般都是先索引了吧。還有這裡

3.NVL(表示式1,表示式2)

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

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

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

4.lpad函式

lpad( string, padded_length, [ pad_string ] )
string準備被填充的字串;padded_length填充之後的字元
串長度,也就是該函式返回的字串長度,如果這個數量比原字串的長度要短,lpad函式將會把字串擷取成從左到右的n個字元;
pad_string填充字串,是個可選引數,這個字串是要貼上到string的左邊,如果這個引數未寫,lpad函式將會在string的左邊貼上空格。 lpad('abcde',10,'x')  lpad('abcde',10,'oq')
xxxxxabcde oqoqoabcde
與lpad函式對應的是rpad函式:rpad(string,padded_length,[pad_string])  從右填充

5.|| 符號

||  是字串累加  相當於sqlserver  “+”
'Good ' || 'Morning!'  ==》Good Morning! 

6.萬用字元

%在SQL表示任意長度的字元。%叫做萬用字元,代表任何字元任意數量


如'%a%'就代表一個字串只要包含字母a就符合條件
'%a'則代表一個字串需要以字母a結尾才符合條件
'a%'就是以a開頭的字串了

like "%王",則表示前面可能有N個字元。但是最後一個字元是"王"字的串。如:小王。芙蓉王。等

7.start with.........connect by子句用法

基本語法是:
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 BYPRIOR org_id = parent_id;就是說上一條記錄的org_id 是本條記錄的parent_id,即本記錄的父親是上一條記錄。
條件3 是過濾條件,用於對返回的所有記錄進行過濾。

8.MAX() 函式

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

9.UNION 操作符

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

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

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

10.commit

oracle的commit就是提交資料(這裡是釋放鎖不是鎖表),在未提交前你前面的操作更新的都是記憶體,沒有更新到物理檔案中。
執行commit從使用者角度講就是更新到物理檔案了,事實上commit時還沒有寫date file,而是記錄了redo log file,要從記憶體寫到data物理檔案,需要觸發檢查點,由DBWR這個後臺程序來寫,這裡內容有點多的,如果不深究的話你就理解成commit即為從記憶體更新到物理檔案。

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

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

相關推薦

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

1.%type和%rowtype %type是用來宣告一個變數和指定表的column一樣的資料型別 例子如下: 需要加.哦 v_EmpName emp.ename%TYPE; 這樣一來v_EmpName和emp.ename的型別一樣了%ROWTYPE用來宣告一個

儲存過程中遇到的問題—— else if和elsif

編譯時報錯,然後發現裡面有這麼一段程式碼: set define off; declare v_nullable varchar(1) := ''; begin if fc_IsTableExists('TCAPCURRENTS_INPUT') then if not fc_IsC

ORACLE儲存過程plsql建立與執行

關鍵字說明 a)建立引數的in \ out \in out說明 IN:傳入引數進PROCEDURE給儲存過程用; OUT:將儲存過程處理的結果傳出來; IN OUT:傳入引數給儲存過程,再將處理後的結果傳出來; b)PLS

sql儲存過程幾個簡單例子

導讀:sql儲存是資料庫操作過程中比較重要的一個環節,對於一些初學者來說也是比較抽象難理解的,本文我將通過幾個例項來解析資料庫中的sql儲存過程,這樣就將抽象的事物形象化,比較容易理解。 例1: create proc proc_stu @sname varchar(20

ORACLE 儲存過程學習

一,基本入門介紹 公司系統需要用到oracle,可是還沒在專案用過oracle,好吧,從基本學起。有問題的地方,歡迎指導啊。 看建立儲存過程的基本定義。注意,帶有[]的都是可選的,可有可無的。只是語法能通過,當然根據自己需要處理。 還是從簡單例子開始學習, 按 Ctrl+C

機器學習梯度下降算法的實現及過程分析

回歸 vnc 分布 AC HA 向量 med mar size 機器學習(一)梯度下降算法 因為算法最好能應用到實際問題中才會讓讀者感到它的真實的用處,因此首先我來描述一個實際問題(梯度下降算法用以幫助解決該問題):給定一個指定的數據集,比如由若幹某一

樹莓派學習——樹莓派安裝系統的過程、問題及解決辦法

shu fat 基於 淘寶 conf 添加 最重要的 access eboot 前言——   買了兩三周的樹莓派,現在才把樹莓派安裝配置好系統,真的是想抽自己兩耳巴子。不過這個月實在太忙了,又是實習,又是忙著畢業雜事,心裏頗不寧靜。這兩天周末,又重新搗鼓了一下樹莓派,準備記

mysql存儲過程學習

mysql存儲 就是 方法 ces end where bsp from 進行 創建一個存儲過程 create procedure myprocess() begin end; 為了避免存儲過程中分號(";")結束語句,我們使用分隔符來判斷該段命令是否已經結束了。 所以我們

View的工作原理之Measure過程原始碼學習

       在Android開發過程中,View控制元件的使用是最基本的技能,而自定義View技能的掌握也是非常重要的。這篇博文講記錄一下在讀任玉剛老師的《Android開發藝術探索》一書中學習到的相關知識以及自己的一些收穫。這裡說明一點,在"View的

ExtJs學習~~ 簡述概念+自己學習過程

一、學習經歷 記得第一次接觸ExtJs的時候,覺得ExtJs相對於經常使用的Bootstrap非常複雜,在網上下載了兩套比較好的教程,花了很多的時間看完,最後也獨立寫了簡單Border佈局頁面模板出來,最終完成的效果是:頭部是固定的展示資訊,左邊是手風琴的選單欄,右邊是點選

機器學習 numpy的函式以及基本用法

新開一個篇章,記錄一下機器學習與資料科學的學習過程。 1.np.getnfromtxt 從txt檔案中讀資料,np.getnfromtxt('filename.txt', delimiter=',', dtype='...', skip_header=1) 2.np

opencv學習總結最近學習的影象處理函式以及waitkey()函式

常用函式 圖片讀寫 cv.imread()函式 Mat cv::imread ( const String & filename, int flags = IMREAD_COLOR ) Python: retval = cv.imread(

java SE學習過程中的知識點小結很多內容過於基礎,希望能幫助到學習路上的同學————歡迎老手批評指正

①、把boolean測試放在括號內:例如while(x==4){}  //當然看過很多部落格,裡面有工作經驗的工作者說以後公司可能習慣性寫(4==x) ②、所有java程式都定義在類中(也是區別於C++的主要特徵) ③、物件本身已知到的事物稱為例項變數,它代表物件的狀態,物件可執行的動作稱為方法。 ④、類可以

day6-基礎函式學習

今日份目錄 1.函式的定義 2.函式的返回值 3.函式的引數 4.函式的區域性變數 5.函式中修改全域性變數 6.巢狀函式 繼續今日份預習! 正文開始 隨著學習進度的逐漸的加深發現我們的函式體越來重複化越來越嚴重,太多重複程式碼,這會讓我們的程式碼的可讀性越來越差 1.函式的定義 定義:將一組語句集合通過一

Python+OGR庫學習:讀取點向量檔案屬性值和座標,並儲存為TXT一行一個要素值

程式碼思路: 1、匯入相關庫包,切換到當前資料夾 2、註冊驅動,開啟點向量檔案,獲取圖層 3、開啟待寫入TXT檔案 4、遍歷要素: (1)獲取當前要素‘ID’和‘cover’欄位屬性 (2)獲取當前點要素對應幾何物件和其座標值X,Y (3)將ID、cover、X、Y寫入TXT檔案 (

機器學習:啟用函式Activation Function

0. 啟用函式 上圖為wiki上的定義:啟用函式定義了每個節點(神經元)的輸出和輸入關係的函式。 下表:常用啟用函式 編號 函數 公式 1) sigmoid(

vue 原始碼學習 目錄結構和構建過程簡介

Flow vue框架使用了Flow作為型別檢查,來保證專案的可讀性和維護性。vue.js的主目錄下有Flow的配置.flowconfig檔案,還有flow目錄,指定了各種自定義型別。 在學習原始碼前可以先看下Flow的語法 官方文件 目錄結構 vue.js原始碼主要在src下 src ├── com

vue 源碼學習 目錄結構和構建過程簡介

編譯 需求 類型檢查 fig文件 key 不同 time enc 來看 Flow vue框架使用了Flow作為類型檢查,來保證項目的可讀性和維護性。vue.js的主目錄下有Flow的配置.flowconfig文件,還有flow目錄,指定了各種自定義類型。 在學習源碼前可以先

#Python第三方模組學習——numpy模組主要功能及函式介紹

1、從Python的基礎資料物件轉化 可以用numpy中的array()函式生成一個ndarray的物件 2、通過Numpy的內建函式生成 arrange()函式,類似於Python中的range()。可以直接生成一個格式為ndarray型別的一組資料,ndarray是

【mysql】測試工程師需要學習的mysql知識-各種刪除方式

truncate,delect,drop的相同點和異同點: 相同點:  truncate 和不帶 where 子句的 delete,以及 drop 都會刪除表內的資料 不同點:  1.     truncate 和 delete 只刪除資料不刪除表的結構(定義)  drop