امکان استفاده از عبارت if [not] exists در هنگام ایجاد و یا حذف یک object

در زمان ساخت یک object، اگر آن object از قبل موجود باشد، با خطای already exist مواجه خواهیم شد همچنین اگر قصد حذف کردن شی ای که موجود نیست را داشته باشیم، خطای does not exist رخ خواهد داد. برای جلوگیری از این دو خطا می توان از عبارت if [not] exists استفاده کرد.

برای مثال، جدول TB از قبل وجود دارد اگر از این مسئله مطمئن نیستیم، می توانیم دستور ساخت این جدول را با استفاده از عبارت if not exists اجرا کرده تا از خطای احتمالی ORA-00955 جلوگیری کنیم:

SQL> create table tb (c1 number(10));
ORA-00955: name is already used by an existing object
SQL> create table if not exists tb (c1 number(10));
Table created
SQL> create table if not exists tb (c1 number(10));
Table created

این عبارت برای دستورات DDLای دیگر هم کاربرد دارد:

SQL> drop sequence ss;
ORA-02289: sequence does not exist
SQL> drop sequence if exists ss;
Sequence dropped

SQL> create user usef identified by ss;
ORA-01920: user name 'USEF' conflicts with another user or role name
SQL> create user if not exists usef identified by ss;
User created
SQL> create user if not exists usef identified by ss;
User created
SQL>  drop user vahid cascade;
ORA-01918: user 'VAHID' does not exist
SQL> drop user if exists vahid cascade;
User dropped
SQL> drop procedure proc1;
ORA-04043: Object PROC1 does not exist.
SQL> drop procedure if exists proc1;
Procedure dropped

البته عبارت if [not] exists همه دستورات DDLای را پوشش نمی دهد:

SQL> alter table if exists tb add (id number);
Table altered
SQL> alter table if exists tb add (id number);
ORA-01430: column being added already exists in table
SQL> create or replace view vw_tb as select * from tb;
View created
SQL> create or replace view if not exists vw_tb as select * from tb;
ORA-11541: REPLACE and IF NOT EXISTS cannot coexist in the same DDL statement

 

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *