刪除存儲(chǔ)過程。

語法

DROP PROCEDURE [ IF EXISTS ] name
  [ ([ [ argmode ] [ argname ] argtype ] [, ...]) ]
  [ CASCADE | RESTRICT ]

說明

DROP PROCEDURE 刪除現(xiàn)有程序的定義。要執(zhí)行該命令,您必須是超級(jí)用戶或存儲(chǔ)過程的所有者。如果這是一個(gè)重載存儲(chǔ)過程,則必須為存儲(chǔ)過程指定所有輸入(ININ 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ǔ)過程特征。)

使用 IFEXISTSCASCADERESTRICT 與 Oracle 數(shù)據(jù)庫不兼容,僅由PolarDB PostgreSQL版(兼容Oracle)使用。

參數(shù)

參數(shù)說明
IF EXISTS如果存儲(chǔ)過程不存在,不引發(fā)錯(cuò)誤。在這種情況下,會(huì)發(fā)出通知。
name現(xiàn)有存儲(chǔ)過程的名稱(可能是 schema 限定的)。
argmode參數(shù)的模式:ININOUTOUT。如果省略,則默認(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;