Oracle23ai 新特性IF [NOT] EXISTS語(yǔ)法支持的使用
IF [NOT] EXISTS 語(yǔ)法支持
CREATE、ALTER和DROP DDL語(yǔ)句支持IF NOT EXISTS和IF EXISTS子句。它們用于抑制因給定對(duì)象的存在或不存在而引發(fā)的潛在錯(cuò)誤,允許您編寫(xiě)冪等DDL腳本。
CREATE DDL語(yǔ)句支持IF NOT EXISTS子句,以防止在具有給定名稱的對(duì)象已存在時(shí)拋出錯(cuò)誤。如果對(duì)象已經(jīng)存在,則忽略該命令,原始對(duì)象保持不變。
另一方面,IF EXISTS子句在與ALTER和DROP DDL語(yǔ)句一起使用時(shí)會(huì)抑制錯(cuò)誤。如果不存在給定名稱的對(duì)象,則忽略該命令,并且沒(méi)有對(duì)象受到ALTER或DROP的影響。
子句的使用或排除為您提供了更多的控制,具體取決于您是否需要在執(zhí)行DDL語(yǔ)句之前知道對(duì)象是否存在。有了這種靈活性,您可以確定是寧愿忽略該語(yǔ)句,還是在對(duì)象存在(或不存在)的情況下引發(fā)錯(cuò)誤。
注意:在使用CREATE DDL語(yǔ)句的命令中,IF NOT EXISTS不能與OR REPLACE結(jié)合使用。
Note:IF NOT EXISTS cannot be used in combination with OR REPLACE in commands using the CREATE DDL statement.
CREATE PROCEDURE with IF NOT EXISTS
假設(shè)您的架構(gòu)中不存在同名過(guò)程,則執(zhí)行一次此語(yǔ)句會(huì)創(chuàng)建過(guò)程hello。
Executing this statement one time results in the creation of procedure hello, assuming a procedure by the same name does not already exist in your schema.
TESTUSER@FREEPDB1> col BANNER format a100
TESTUSER@FREEPDB1> select BANNER from v$version;
BANNER
----------------------------------------------------------------------------------------------------
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
CREATE PROCEDURE IF NOT EXISTS hello AS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello there');
END;
/


即使更改了存儲(chǔ)過(guò)程體,多次執(zhí)行語(yǔ)句也不會(huì)導(dǎo)致錯(cuò)誤。原來(lái)的身體保持不變。
Executing the statement additional times, even with an altered procedure body, results in no error. The original body remains unchanged.
TESTUSER@FREEPDB1> CREATE PROCEDURE IF NOT EXISTS hello AS
2 BEGIN
3 DBMS_OUTPUT.PUT_LINE('Second hello');
4 END;
5 /
Procedure created.
TESTUSER@FREEPDB1> col text format a100
TESTUSER@FREEPDB1> SELECT TEXT FROM USER_SOURCE WHERE NAME='HELLO';
TEXT
----------------------------------------------------------------------------------------------------
PROCEDURE hello AS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello there');
END;
Orcle19c及之前版本都不支持該語(yǔ)法

發(fā)現(xiàn)創(chuàng)建時(shí)編譯不成功。去掉IF NOT EXISTS則成功創(chuàng)建,并執(zhí)行成功!
HR@orcl> CREATE PROCEDURE hello AS
2 BEGIN
3 DBMS_OUTPUT.PUT_LINE('Second hello');
4 END;
5 /
Procedure created.
HR@orcl> col BANNER format a100
HR@orcl> select BANNER from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
HR@orcl> set serveroutput on
HR@orcl> begin
2 hello();
3 end;
4 /
Second hello
PL/SQL procedure successfully completed.到此這篇關(guān)于Oracle23ai 新特性IF [NOT] EXISTS語(yǔ)法支持的使用的文章就介紹到這了,更多相關(guān)Oracle23ai IF [NOT] EXISTS內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle SQL Developer顯示的時(shí)間包含時(shí)分秒的設(shè)置方法
Oracle SQL Developer是Oracle公司出品的一個(gè)免費(fèi)的集成開(kāi)發(fā)環(huán)境,本篇文章給大家介紹Oracle SQL Developer顯示的時(shí)間包含時(shí)分秒的設(shè)置方法,需要的朋友參考下吧2015-09-09
mybatis?調(diào)用?Oracle?存儲(chǔ)過(guò)程并接受返回值的示例代碼
這篇文章主要介紹了mybatis?調(diào)用?Oracle?存儲(chǔ)過(guò)程?并接受返回值,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Oracle Listener 動(dòng)態(tài)注冊(cè) 與 靜態(tài)注冊(cè)
注冊(cè)就是將數(shù)據(jù)庫(kù)作為一個(gè)服務(wù)注冊(cè)到監(jiān)聽(tīng)程序。客戶端不需要知道數(shù)據(jù)庫(kù)名和實(shí)例名,只需要知道該數(shù)據(jù)庫(kù)對(duì)外提供的服務(wù)名就可以申請(qǐng)連接到數(shù)據(jù)庫(kù)2015-12-12
Oracle/SQL中TO_DATE函數(shù)詳細(xì)實(shí)例解析
Oracle to_date()函數(shù)用于日期轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Oracle/SQL中TO_DATE函數(shù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用oracle具有一定的參考解決價(jià)值,需要的朋友可以參考下2024-06-06
Oracle遞歸查詢樹(shù)形數(shù)據(jù)實(shí)例代碼
Oracle數(shù)據(jù)庫(kù)中常要處理一些父子關(guān)系的記錄,在OLTP中要用得多一些,oracle提供了遞歸查詢可以很容易的滿足這個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于Oracle遞歸查詢樹(shù)形數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-11-11
Oracle創(chuàng)建和管理分區(qū)索引的操作方法
創(chuàng)建和管理分區(qū)索引(Partitioned Index)是數(shù)據(jù)庫(kù)管理中的重要任務(wù),特別是在處理大規(guī)模數(shù)據(jù)集時(shí),以下是如何在Oracle數(shù)據(jù)庫(kù)中創(chuàng)建和管理分區(qū)索引的詳細(xì)步驟和示例代碼,感興趣的朋友一起看看吧2024-08-08
oracle中讀寫(xiě)blob字段的問(wèn)題解析
這篇文章以程序?qū)嵗f(shuō)明通過(guò)JDBC操縱Oracle數(shù)據(jù)庫(kù)LOB類(lèi)型字段的幾種情況2013-09-09

