oracle 存储过程
1.創(chuàng)建過程
與其它的數(shù)據(jù)庫系統(tǒng)一樣,Oracle的存儲(chǔ)過程是用PL/SQL語言編寫的能完成一定處理功能的存儲(chǔ)在數(shù)據(jù)庫字典中的程序。
語法:
create [or replace] procedure procedure_name
[ (argment [ { in| in out }] type,
argment [ { in | out | in out } ] type
{ is | as }
<類型.變量的說明>
( 注: 不用 declare 語句 )
Begin
<執(zhí)行部分>
exception
<可選的異常處理說明>
end;
l 這里的IN表示向存儲(chǔ)過程傳遞參數(shù),OUT表示從存儲(chǔ)過程返回參數(shù)。而IN OUT 表示傳遞參數(shù)和返回參數(shù);
l 在存儲(chǔ)過程內(nèi)的變量類型只能指定變量類型;不能指定長(zhǎng)度;
l 在AS或IS 后聲明要用到的變量名稱和變量類型及長(zhǎng)度;
l 在AS或IS 后聲明變量不要加declare 語句。
2.使用過程
存儲(chǔ)過程建立完成后,只要通過授權(quán),用戶就可以在SQLPLUS 、Oracle開發(fā)工具或第三方開發(fā)工具來調(diào)用運(yùn)行。Oracle 使用EXECUTE 語句來實(shí)現(xiàn)對(duì)存儲(chǔ)過程的調(diào)用。
語法:
EXEC[UTE] procedure_name( parameter1, parameter2…);
3.開發(fā)過程
目前的幾大數(shù)據(jù)庫廠商提供的編寫存儲(chǔ)過程的工具都沒有統(tǒng)一,雖然它們的編寫風(fēng)格有些相似,但由于沒有標(biāo)準(zhǔn),所以各家的開發(fā)調(diào)試過程也不一樣。下面編寫PL/SQL存儲(chǔ)過程、函數(shù)、包及觸發(fā)器的步驟如下:
3.1 編輯存儲(chǔ)過程源碼使用文字編輯處理軟件編輯存儲(chǔ)過程源碼,要用類似WORD 文字處理軟件進(jìn)行編輯時(shí),要將源碼存為文本格式。
3.2 對(duì)存儲(chǔ)過程程序進(jìn)行解釋在SQLPLUS或用調(diào)試工具將 存儲(chǔ)過程程序進(jìn)行解釋;
在SQL>下調(diào)試,可用start 或get 等Oracle命令來啟動(dòng)解釋。如:
SQL>start c:/stat1.sql
如果使用調(diào)試工具,可直接編輯和點(diǎn)擊相應(yīng)的按鈕即可生成存儲(chǔ)過程。[1]
3.3 調(diào)試源碼直到正確我們不能保證所寫的存儲(chǔ)過程達(dá)到一次就正確。所以這里的調(diào)試是每個(gè)程序員必須進(jìn)行的工作之一。在SQLPLUS下來調(diào)試主要用的方法是:
1.使用 SHOW ERROR命令來提示源碼的錯(cuò)誤位置;
2.使用 USER_ERRORS 數(shù)據(jù)字典來查看各存儲(chǔ)過程的錯(cuò)誤位置。
3.4 授權(quán)執(zhí)行權(quán)給相關(guān)的用戶或角色如果調(diào)試正確的存儲(chǔ)過程沒有進(jìn)行授權(quán),那就只有建立者本人才可以運(yùn)行。所以作為應(yīng)用系統(tǒng)的一部分的存儲(chǔ)過程也必須進(jìn)行授權(quán)才能達(dá)到要求。 在SQLPLUS下可以用GRANT命令來進(jìn)行存儲(chǔ)過程的運(yùn)行授權(quán)。
語法:
GRANT system_privilege | role TO user | role | PUBLIC
[WITH ADMIN OPTION]
或
GRANT object_privilege | ALL column ON schema.object
TO user | role | PUBLIC WITH GRANT OPTION
其中:
system_privilege: 系統(tǒng)權(quán)限
role: 角色名
user: 被授權(quán)的用戶名
object_privilege: 所授予的權(quán)限名字,可以是
ALTER
DELETE
EXECUTE
INDEX
INSERT
REFERENCES
SELECT
UPDATE
Column: 列名
schema: 模式名
object: 對(duì)象名
4.數(shù)據(jù)字典
USER_SOURCE 用戶的存儲(chǔ)過程、函數(shù)的源代碼字典
DBA_SOURCE 整個(gè)系統(tǒng)所有用戶的存儲(chǔ)過程、函數(shù)的源代碼字典
ALL_SOURCE 當(dāng)前用戶能使用的存儲(chǔ)過程(包括其她用戶授權(quán))、函數(shù)的源代碼字典
USER_ERRORS 用戶的存儲(chǔ)過程、函數(shù)的源代碼存在錯(cuò)誤的信息字典
總結(jié)
以上是生活随笔為你收集整理的oracle 存储过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 表达式转二叉树
- 下一篇: 如何编写oracle存储过程