欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:java 禁止使用存儲過程

OZON智者選綜合2025-05-05430

柚子快報激活碼778899分享:java 禁止使用存儲過程

http://yzkb.51969.com/

優(yōu)質(zhì)博文:IT-BLOG-CN

靈感來源

什么是存儲過程

存儲過程Stored Procedure是指為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶可通過指定存儲過程的名字并給定參數(shù)(如果該存儲過程帶有參數(shù))來調(diào)用執(zhí)行。

存儲過程在數(shù)據(jù)庫技術(shù)中屬于一種服務(wù)端編程方式,是一組預(yù)編譯的SQL語句集,常用于對數(shù)據(jù)庫進(jìn)行操作、控制和管理。存儲過程通常包括流程控制語句、數(shù)據(jù)操作語句、變量的定義和賦值、條件判斷語句等,可以在執(zhí)行過程中接受參數(shù)輸入,并返回查詢結(jié)果。

不推薦的原因

【1】存儲過程的所有邏輯都是在數(shù)據(jù)庫層面,導(dǎo)致代碼后續(xù)的可維護(hù)性下降; 【2】存儲過程可能會包含復(fù)雜的業(yè)務(wù)邏輯,會導(dǎo)致數(shù)據(jù)庫的負(fù)載增加,影響數(shù)據(jù)庫的性能; 【3】互聯(lián)網(wǎng)的數(shù)據(jù)庫由數(shù)據(jù)庫部門專門管理和維護(hù),開發(fā)任務(wù)無法直接訪問數(shù)據(jù)庫。當(dāng)將業(yè)務(wù)邏輯寫在數(shù)據(jù)庫中時,后續(xù)對業(yè)務(wù)進(jìn)行修改和維護(hù)時就需要同步升級存儲過程。影響業(yè)務(wù)邏輯的維護(hù)性。 【4】存儲過程的本身是比較難以調(diào)試和測試的,所有對于后續(xù)的維護(hù)也不是很方便。 【5】數(shù)據(jù)庫遷移困難:如果需要從一種數(shù)據(jù)庫遷移到另一種數(shù)據(jù)庫(例如從Oracle遷移到MySQL),存儲過程可能需要重寫,這會帶來大量的工作量和風(fēng)險。 【6】管理困難:隨著存儲過程的增多,管理可能會變得非常混亂,給維護(hù)工作帶來極大的不便。 【7】分布式場景的問題:在分布式場景下,存儲過程可能無法很好地處理數(shù)據(jù)分片的問題。例如,水平分表的情況下,存儲過程可能無法處理所有數(shù)據(jù)的分析結(jié)果。

適合存儲的場景

存儲過程的特點: 存儲過程具有以下幾個特點: 【1】封裝性: 存儲過程是由SQL語句和控制語句組成的過程,它們被封裝在一起,形成了一個獨立的對象,這樣可以方便客戶端應(yīng)用程序調(diào)用。 【2】可重用性: 存儲過程可以被多個客戶端應(yīng)用程序重復(fù)使用,因為它們是預(yù)編譯的,可以在多個應(yīng)用程序之間共享。 【3】可編程性: 存儲過程是可編程的,可以由用戶通過SQL語句和控制結(jié)構(gòu)來定義和修改,從而實現(xiàn)對數(shù)據(jù)庫的操作。 【4】安全性: 存儲過程是在數(shù)據(jù)庫中創(chuàng)建和保存的,因此可以增加數(shù)據(jù)庫的安全性。只有受權(quán)的用戶才能調(diào)用存儲過程,避免了SQL注入攻擊等安全問題。

適合的場景

像銀行這類系統(tǒng),通常會采用商用的數(shù)據(jù)庫Oracle、DB2等,應(yīng)為這些供應(yīng)商有著完整的解決方案,可以幫助銀行規(guī)避大量的風(fēng)險。銀行的一些外圍業(yè)務(wù)會使用一些國產(chǎn)的分布式數(shù)據(jù)庫或者 MySQL這樣開源的數(shù)據(jù)庫。

銀行是以數(shù)據(jù)為核心,且早期銀行在建設(shè)業(yè)務(wù)的時候,沒有好的國產(chǎn)數(shù)據(jù)庫,所以采采購了 Oracle、DB2這樣有成功經(jīng)驗的的數(shù)據(jù)庫。且每套數(shù)據(jù)庫都有著自己的一套存儲過程開發(fā)方式,只要掌握了存儲過程的開發(fā)技巧,對數(shù)據(jù)的交互過程是沒有問題的,對于前端使用go、java、c++才是第二關(guān)心得問題。

存儲過程的語法

DELIMITER // #將語句的結(jié)束符號從分號;臨時改為兩個//(可以是自定義)

CREATE PROCEDURE CalculateSquare(IN num INT, OUT result INT) # CREATEPROCEDURE 存儲過程名([[IN |OUT |INOUT ] 參數(shù)名 數(shù)據(jù)類形...])

BEGIN

SET result = num * num;

END //

DELIMITER ; #將語句的結(jié)束符號恢復(fù)為分號

【1】DELIMITER用于更改命令結(jié)束符,以便在存儲過程中使用BEGIN ... END語句。通常,我們使用 //作為新的結(jié)束符,并在存儲過程定義結(jié)束后將其改回;。 【2】CREATE PROCEDURE用于創(chuàng)建新的存儲過程。 【3】CalculateSquare是存儲過程的名稱。 【4】(IN num INT, OUT result INT) 定義了輸入和輸出參數(shù)。在這個例子中,num是一個輸入?yún)?shù),result是一個輸出參數(shù)。 【5】BEGIN ... END之間的部分是存儲過程的主體,即要執(zhí)行的SQL語句。

調(diào)用存儲過程: 要調(diào)用上述存儲過程并獲取結(jié)果,你需要使用CALL語句,并指定一個變量來接收輸出參數(shù)的值:

SET @input = 5;

SET @output = 0;

CALL CalculateSquare(@input, @output);

SELECT @output; -- 輸出應(yīng)該是 25

MyBatis調(diào)用存儲過程

【1】Mapper.xml文件的使用方式

{call bcjs_clean}

【2】注解方式

public interface LrMonitorConcentrationMapper extends BaseMapper {

@Select({"call setValueIsNotNull(#{format})"})

@Options(statementType = StatementType.CALLABLE)

void implementStorage(String format);

}

柚子快報激活碼778899分享:java 禁止使用存儲過程

http://yzkb.51969.com/

參考閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19531282.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄