檢測(cè)到您已登錄華為云國際站賬號(hào),為了您更好的體驗(yàn),建議您訪問國際站服務(wù)網(wǎng)站 http://m.cqfng.cn/intl/zh-cn
不再顯示此消息
存儲(chǔ)過程 商業(yè)規(guī)則和業(yè)務(wù)邏輯可以通過程序存儲(chǔ)在GaussDB中,這個(gè)程序就是存儲(chǔ)過程。 存儲(chǔ)過程是SQL和PL/SQL的組合。存儲(chǔ)過程使執(zhí)行商業(yè)規(guī)則的代碼可以從應(yīng)用程序中移動(dòng)到數(shù)據(jù)庫。從而,代碼存儲(chǔ)一次能夠被多個(gè)程序使用。 存儲(chǔ)過程的創(chuàng)建及調(diào)用方法請(qǐng)參考CREATE PROCEDURE。
存儲(chǔ)過程 商業(yè)規(guī)則和業(yè)務(wù)邏輯可以通過程序存儲(chǔ)在GaussDB中,這個(gè)程序就是存儲(chǔ)過程。 存儲(chǔ)過程是SQL、PL/SQL、Java語句的組合。存儲(chǔ)過程使執(zhí)行商業(yè)規(guī)則的代碼可以從應(yīng)用程序中移動(dòng)到數(shù)據(jù)庫。從而,代碼存儲(chǔ)一次能夠被多個(gè)程序使用。 存儲(chǔ)過程的創(chuàng)建及調(diào)用辦法請(qǐng)參考CREATE
二、存儲(chǔ)過程 2.1 存儲(chǔ)過程簡介 我們常用的數(shù)據(jù)庫操作語言SQL語句在執(zhí)行的時(shí)候需要先編譯,然后執(zhí)行,而存儲(chǔ)過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫中,用戶通過指定存儲(chǔ)過程的名字并給定參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來調(diào)用執(zhí)行它。
通過存儲(chǔ)過程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護(hù)數(shù)據(jù)庫的完整性。 3. 再運(yùn)行存儲(chǔ)過程前,數(shù)據(jù)庫已對(duì)其進(jìn)行了語法和句法分析,并給出了優(yōu)化執(zhí)行方案。這種已經(jīng)編譯好的過程可極大地改善SQL語句的性能。 由于執(zhí)行SQL語句的大部分工作已經(jīng)完成,所以存儲(chǔ)過程能以極快的速度執(zhí)行。 4
調(diào)用存儲(chǔ)過程時(shí),定義變量declare一定要在begin之前。 declare -- Local variables here i integer; a VARCHAR(100); b VARCHAR(20);
? 目錄 存儲(chǔ)過程(Stored Procedures)的創(chuàng)建和執(zhí)行 創(chuàng)建存儲(chǔ)過程 示例:創(chuàng)建一個(gè)簡單的存儲(chǔ)過程 執(zhí)行存儲(chǔ)過程 示例:執(zhí)行存儲(chǔ)過程 函數(shù)(Functions)的創(chuàng)建和使用 創(chuàng)建用戶自定義函數(shù)(User-Defined Functions,UDF) 示例:創(chuàng)建一個(gè)簡單的用戶自定義函數(shù)
用戶自定義存儲(chǔ)過程 -----/////------- ---1.創(chuàng)建無參數(shù)的存儲(chǔ)過程※ use QQDB --需求:查詢李四賬戶的余額,如果大于500,輸出大于500,否則輸出小于500 go create proc usp_findPriceByLs as --sql語句 declare
PUT_LINE('在RUNBYPARMETERS過程中出錯(cuò)!'); end; 其中參數(shù)IN表示輸入?yún)?shù),是參數(shù)的默認(rèn)模式。 OUT表示返回值參數(shù),類型可以使用任意Oracle中的合法類型。 OUT模式定義的參數(shù)只能在過程體內(nèi)部賦值,表示該參數(shù)可以將某個(gè)值傳遞回調(diào)用他的過程 IN OUT表示該參數(shù)可以向該過程中傳遞值,也可以將某個(gè)值傳出去。
二、存儲(chǔ)過程 2.1 存儲(chǔ)過程簡介 我們常用的數(shù)據(jù)庫操作語言SQL語句在執(zhí)行的時(shí)候需要先編譯,然后執(zhí)行,而存儲(chǔ)過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫中,用戶通過指定存儲(chǔ)過程的名字并給定參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來調(diào)用執(zhí)行它。
二、存儲(chǔ)過程 2.1 存儲(chǔ)過程簡介 我們常用的數(shù)據(jù)庫操作語言SQL語句在執(zhí)行的時(shí)候需要先編譯,然后執(zhí)行,而存儲(chǔ)過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫中,用戶通過指定存儲(chǔ)過程的名字并給定參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來調(diào)用執(zhí)行它。
二、存儲(chǔ)過程 2.1 存儲(chǔ)過程簡介 我們常用的數(shù)據(jù)庫操作語言SQL語句在執(zhí)行的時(shí)候需要先編譯,然后執(zhí)行,而存儲(chǔ)過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫中,用戶通過指定存儲(chǔ)過程的名字并給定參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來調(diào)用執(zhí)行它。
必須要使用程序包、過程和函數(shù)對(duì)象。 本章將學(xué)習(xí)過程、函數(shù)和程序包等概念。過程與函數(shù)是命名的PL/SQL塊,可以被編譯后存儲(chǔ)在數(shù)據(jù)庫中,以備執(zhí)行,其他PL/SQL塊可以按名稱來調(diào)用。實(shí)際應(yīng)用中,可以將商業(yè)邏輯、企業(yè)規(guī)則寫成過程或函數(shù)保存到數(shù)據(jù)庫中,以便共享。過程與函數(shù)也被稱為子程序
此次兩個(gè)存儲(chǔ)過程均為查詢動(dòng)作,用explain下推不成功,請(qǐng)教各位大俠!例子如下:EXPLAINSELECT CAST( T.pcbasn AS VARCHAR ) pcbasn,CAST ( T.imei AS VARCHAR ) imei,CAST ( T.inputsn AS
2 rows fetched.--刪除存儲(chǔ)過程。 DROP PROCEDURE p_no_param;使用帶參數(shù)的存儲(chǔ)過程。--為存儲(chǔ)過程案例準(zhǔn)備基礎(chǔ)表。 --刪除重名的臨時(shí)表。 DROP TABLE IF EXISTS table_temp; --創(chuàng)建臨時(shí)表。 CREATE TABLE table_temp(f1 INT
使用不帶參數(shù)的存儲(chǔ)過程。--為存儲(chǔ)過程案例準(zhǔn)備基礎(chǔ)表。 --刪除重名的臨時(shí)表。 DROP TABLE IF EXISTS table_temp; --創(chuàng)建臨時(shí)表。 CREATE TABLE table_temp(f1 INT, f2 VARCHAR2(20));存儲(chǔ)過程和函數(shù)存儲(chǔ)在同一個(gè)
END; /參數(shù)說明OR REPLACE如果存儲(chǔ)過程已經(jīng)存在,替換原有的存儲(chǔ)過程。IF NOT EXIST判斷存儲(chǔ)過程是否存在。procedure_name存儲(chǔ)過程名。schema_name存儲(chǔ)過程所有者。args_list參數(shù)列表。包含輸入?yún)?shù)(in)、輸出參數(shù)(out)和輸入輸出參數(shù)(in
語句的集合??梢栽跀?shù)據(jù)庫層面做一些業(yè)務(wù)處理 說白了存儲(chǔ)過程其實(shí)就是將sql語句封裝為方法,然后可以調(diào)用方法執(zhí)行sql語句而已 存儲(chǔ)過程的好處 安全 高效 復(fù)用性強(qiáng) 10.存儲(chǔ)函數(shù) 存儲(chǔ)函數(shù)和存儲(chǔ)過程是非常相似的。存儲(chǔ)函數(shù)可以做的事情,存儲(chǔ)過程也可以做到! 存儲(chǔ)函數(shù)有返回值,存儲(chǔ)過程沒有返回值(參數(shù)的out其實(shí)也相當(dāng)于是返回?cái)?shù)據(jù)了)
刪除存儲(chǔ)過程功能描述刪除存儲(chǔ)過程。注意事項(xiàng)刪除確定存在的存儲(chǔ)過程時(shí),可不使用關(guān)鍵字IF EXISTS。刪除不確定是否存在的存儲(chǔ)過程,建議使用“DROP PROCEDURE IF EXISTS procedure_name;”,避免因要?jiǎng)h除的存儲(chǔ)過程不存在而返回錯(cuò)誤,普通用戶不可以
其實(shí)這個(gè)SQL中的存儲(chǔ)過程很像Java中的定義函數(shù),調(diào)用函數(shù)。 首先看定義: create procedure 過程名(參數(shù)...) begin SQL語句... end1234 調(diào)用: call 過程名(實(shí)參)1 有一個(gè)需要注意的地方: 在定義前,需要先把默認(rèn)的語句結(jié)束’;’號(hào)改成其它,如’&&’
誤。--執(zhí)行存儲(chǔ)過程時(shí),只為沒有默認(rèn)值的參數(shù)指定值。 --使用CALL執(zhí)行存儲(chǔ)過程。 CALL p_with_param(param3=>'yyy'); --使用EXEC執(zhí)行存儲(chǔ)過程。 EXEC p_with_param(param3=>'yyyy');--查詢臨時(shí)表數(shù)據(jù)。 SE