刪除存儲(chǔ)過程。
語法
DROP PROCEDURE [ IF EXISTS ] name
[ ([ [ argmode ] [ argname ] argtype ] [, ...]) ]
[ CASCADE | RESTRICT ]
說明
DROP PROCEDURE
刪除現(xiàn)有程序的定義。要執(zhí)行該命令,您必須是超級(jí)用戶或存儲(chǔ)過程的所有者。如果這是一個(gè)重載存儲(chǔ)過程,則必須為存儲(chǔ)過程指定所有輸入(IN
、IN OUT
)參數(shù)的數(shù)據(jù)類型。(該要求與 Oracle 數(shù)據(jù)庫不兼容。在 Oracle 中,僅指定存儲(chǔ)過程名稱。PolarDB PostgreSQL版(兼容Oracle)允許重載存儲(chǔ)過程名稱,因此在PolarDB PostgreSQL版(兼容Oracle)中,重載存儲(chǔ)過程的 DROP PROCEDURE
命令需要使用輸入?yún)?shù)數(shù)據(jù)類型給定的存儲(chǔ)過程特征。)
使用 IFEXISTS
、CASCADE
或 RESTRICT
與 Oracle 數(shù)據(jù)庫不兼容,僅由PolarDB PostgreSQL版(兼容Oracle)使用。
參數(shù)
參數(shù) | 說明 |
---|---|
IF EXISTS | 如果存儲(chǔ)過程不存在,不引發(fā)錯(cuò)誤。在這種情況下,會(huì)發(fā)出通知。 |
name | 現(xiàn)有存儲(chǔ)過程的名稱(可能是 schema 限定的)。 |
argmode | 參數(shù)的模式:IN 、INOUT 或 OUT 。如果省略,則默認(rèn)值為 IN 。請注意,DROP PROCEDURE 實(shí)際上并不受 OUT 參數(shù)影響,因?yàn)閮H需要輸入?yún)?shù)即可確定存儲(chǔ)過程的身份。因此,僅列出 IN 和 INOUT 參數(shù)即可。(指定 argmode 與 Oracle 數(shù)據(jù)庫不兼容,它僅適用于PolarDB PostgreSQL版(兼容Oracle)。) |
argname | 參數(shù)的名稱。請注意,DROP PROCEDURE 實(shí)際上并不受參數(shù)名稱影響,因?yàn)閮H需參數(shù)數(shù)據(jù)類型即可確定存儲(chǔ)過程的身份。(指定 argname 與 Oracle 數(shù)據(jù)庫不兼容,它僅適用于PolarDB PostgreSQL版(兼容Oracle)。) |
argtype | 存儲(chǔ)過程參數(shù)的數(shù)據(jù)類型。(指定 argtype 與 Oracle 數(shù)據(jù)庫不兼容,它僅適用于PolarDB PostgreSQL版(兼容Oracle)。) |
CASCADE | 自動(dòng)刪除依賴于存儲(chǔ)過程的對象,并就此刪除依賴于這些對象的所有對象。 |
RESTRICT | 如果存在依賴于過程的任何對象,則拒絕刪除存儲(chǔ)過程。這是默認(rèn)值。 |
示例
以下命令會(huì)刪除 select_emp
存儲(chǔ)過程。
DROP PROCEDURE select_emp;