當(dāng)我們已經(jīng)創(chuàng)建好了一個(gè)存儲(chǔ)過程,但發(fā)現(xiàn)創(chuàng)建的存儲(chǔ)過程有問題時(shí),我們需要修改此存儲(chǔ)過程,以便數(shù)據(jù)庫系統(tǒng)中存在一個(gè)我們所需要的正確的存儲(chǔ)過程,有以下幾種方法可以實(shí)現(xiàn)(是在命令行中進(jìn)行操作,不是在PL/SQL中操作,在PL/SQL中操作問題就變得簡單了):
1)先DROP PROC PROC_A,然后重新CREATE PROC PROC_A,但此時(shí)可能會(huì)有一個(gè)問題,即如果A存儲(chǔ)過程已被其他存儲(chǔ)過程引用,則此時(shí)將不能DROP 掉A存儲(chǔ)過程,所以這樣就產(chǎn)生了下面的方法;
2)直接ALTER PROC PROC_A,即修改存儲(chǔ)過程A,這種方法的好處有:
修改以前用CREATE PROCEDURE 命令創(chuàng)建的存儲(chǔ)過程,并且不改變權(quán)限的授予情況以及不影響任何其它的獨(dú)立的存儲(chǔ)過程或觸發(fā)器,
ALTER PROC[EDURE] procedure_name [;number]
[ {@parameter data_type } [VARYING] [= default] [OUTPUT]] [,...n]
[WITH
{RECOMPILE │ ENCRYPTION │ RECOMPILE , ENCRYPTION}]
[FOR REPLICATION]
AS
sql_statement [...n]
3)用創(chuàng)建或存在就替換的命令進(jìn)行操作,即 CREATE OR REPLACE PROCEDURE PROC_A.
另:查看存儲(chǔ)過程內(nèi)容(文本)
select text from all_source where OWNER='USERNAME' and TYPE='PROCEDURE' and NAME='PROCNAME';
經(jīng)過查看內(nèi)容后,就可以確認(rèn)下存儲(chǔ)過程是否是已經(jīng)修改后的了.
posted on 2008-08-21 16:40
henry1451 閱讀(4489)
評(píng)論(2) 編輯 收藏