sql存儲(chǔ)過(guò)程實(shí)例詳解 數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程怎么編寫(xiě)?
數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程怎么編寫(xiě)?Oracle存儲(chǔ)過(guò)程基本語(yǔ)法:create or replace procedure存儲(chǔ)過(guò)程名稱(chēng)為begin null end解釋?zhuān)旱?行:create or replace
數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程怎么編寫(xiě)?
Oracle存儲(chǔ)過(guò)程基本語(yǔ)法:create or replace procedure存儲(chǔ)過(guò)程名稱(chēng)為begin null end解釋?zhuān)旱?行:create or replace procedure是一條SQL語(yǔ)句,它告訴Oracle數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)名為skeleton的存儲(chǔ)過(guò)程,如果它存在,將被覆蓋。第2行:is關(guān)鍵字表示它后面將跟一個(gè)PL/SQL主體。第3行:begin關(guān)鍵字指示PL/SQL主體的開(kāi)始。第4行:null PL/SQL語(yǔ)句表示什么也不做。無(wú)法刪除此句子,因?yàn)镻L/SQL正文中至少需要一個(gè)句子。第5行:end關(guān)鍵字表示PL/SQL主體的結(jié)束。
存儲(chǔ)過(guò)程在數(shù)據(jù)庫(kù)中的作用是什么?
存儲(chǔ)過(guò)程是一組預(yù)編譯的transact-SQL語(yǔ)句。將它放到服務(wù)器上,并讓用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名稱(chēng)來(lái)執(zhí)行它。存儲(chǔ)過(guò)程可以用作獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象,也可以用作用戶(hù)應(yīng)用程序調(diào)用的單元。存儲(chǔ)過(guò)程可以接收和輸出參數(shù),返回執(zhí)行存儲(chǔ)過(guò)程的狀態(tài)值,以及嵌套調(diào)用。存儲(chǔ)過(guò)程與其他編程語(yǔ)言中的過(guò)程類(lèi)似,主要體現(xiàn)在以下幾個(gè)方面:(1)存儲(chǔ)過(guò)程可以接收參數(shù)并以接收參數(shù)的形式返回多個(gè)參數(shù)來(lái)調(diào)用存儲(chǔ)過(guò)程和批處理。(2) 它包含執(zhí)行數(shù)據(jù)庫(kù)操作的編程語(yǔ)句,還可以調(diào)用其他存儲(chǔ)過(guò)程。(3) 向調(diào)用過(guò)程或批處理返回狀態(tài)值,以反映存儲(chǔ)過(guò)程的執(zhí)行情況。注意:存儲(chǔ)過(guò)程不同于函數(shù)。存儲(chǔ)過(guò)程不能在被調(diào)用位置返回?cái)?shù)據(jù),也不能應(yīng)用于語(yǔ)句。例如,存儲(chǔ)過(guò)程不能以類(lèi)似于“@proc=stored procedure name”的方式使用。但是,存儲(chǔ)過(guò)程可以以變量的形式返回參數(shù)。存儲(chǔ)過(guò)程的優(yōu)點(diǎn)體現(xiàn)在以下幾個(gè)方面:(1)執(zhí)行速度快,并且在創(chuàng)建時(shí)經(jīng)過(guò)了語(yǔ)法檢查和性能優(yōu)化,因此在執(zhí)行時(shí)不必重復(fù)這些步驟。在第一次調(diào)用之后,存儲(chǔ)過(guò)程駐留在內(nèi)存中,不需要編譯和優(yōu)化,因此執(zhí)行速度非???。當(dāng)需要重復(fù)執(zhí)行大量的批處理transact-SQL語(yǔ)句時(shí),使用存儲(chǔ)過(guò)程可以大大提高運(yùn)行效率。(2) 模塊化編程只需要?jiǎng)?chuàng)建一個(gè)存儲(chǔ)過(guò)程,并將其存儲(chǔ)在數(shù)據(jù)庫(kù)中,該數(shù)據(jù)庫(kù)可以在程序中多次調(diào)用。用戶(hù)可以獨(dú)立于應(yīng)用程序修改存儲(chǔ)過(guò)程。(3) 為了減少網(wǎng)絡(luò)流量,存儲(chǔ)過(guò)程可以包含大量transact-SQL語(yǔ)句。在調(diào)用中,只能使用一條語(yǔ)句,而不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼。(4) 為了保證系統(tǒng)的安全性,可以設(shè)置用戶(hù)通過(guò)存儲(chǔ)過(guò)程訪問(wèn)一些關(guān)鍵數(shù)據(jù),但不允許用戶(hù)直接使用transact-SQL語(yǔ)句或enterprisemanager訪問(wèn)這些數(shù)據(jù)。