Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Semak Kewujudan Jadual dan Lakukan Operasi DDL Bersyarat dalam Oracle?
Tidak seperti MySQL, pangkalan data Oracle tidak mempunyai sintaks IF EXISTS
langsung untuk operasi jadual. Walau bagaimanapun, kita boleh mencapai fungsi yang sama melalui kaedah berikut.
Cara paling berkesan ialah menangkap pengecualian "jadual tidak wujud":
<code class="language-sql">BEGIN EXECUTE IMMEDIATE 'DROP TABLE ' || table_name; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;</code>
Kaedah ini mengelakkan keperluan untuk menyemak sama ada jadual wujud dua kali seperti kaedah lain.
IF EXISTS
Sintaks (Oracle 23c dan ke atas) Bermula dengan Oracle versi 23c, semua DROP
operasi DDL menyokong sintaks IF EXISTS
yang lebih mudah:
<code class="language-sql">BEGIN EXECUTE IMMEDIATE 'DROP TABLE IF EXISTS ' || table_name; END;</code>
Blok pengendalian pengecualian serupa boleh digunakan untuk jenis objek Oracle yang lain:
<code class="language-sql">BEGIN EXECUTE IMMEDIATE 'DROP SEQUENCE ' || sequence_name; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -2289 THEN RAISE; END IF; END;</code>
<code class="language-sql">BEGIN EXECUTE IMMEDIATE 'DROP VIEW ' || view_name; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;</code>
<code class="language-sql">BEGIN EXECUTE IMMEDIATE 'DROP TRIGGER ' || trigger_name; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -4080 THEN RAISE; END IF; END;</code>
<code class="language-sql">BEGIN EXECUTE IMMEDIATE 'DROP INDEX ' || index_name; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -1418 THEN RAISE; END IF; END;</code>
<code class="language-sql">BEGIN EXECUTE IMMEDIATE 'ALTER TABLE ' || table_name || ' DROP COLUMN ' || column_name; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -904 AND SQLCODE != -942 THEN RAISE; END IF; END;</code>
Atas ialah kandungan terperinci Bagaimana untuk Semak Kewujudan Jadual dan Lakukan Operasi DDL Bersyarat dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!