我正在運行Oracle SQL Developer 4.0。當我編寫一個表格時,所有者,表格名稱,列名稱,約束名稱等都用雙引號括起來。我查看了「工具」 - >「首選項」,但無法找到任何關閉它的選項。有沒有人知道如何編寫一個沒有這些引號的表格?Oracle SQL Developer 4.0 - 如何刪除腳本中的雙引號
謝謝
我正在運行Oracle SQL Developer 4.0。當我編寫一個表格時,所有者,表格名稱,列名稱,約束名稱等都用雙引號括起來。我查看了「工具」 - >「首選項」,但無法找到任何關閉它的選項。有沒有人知道如何編寫一個沒有這些引號的表格?Oracle SQL Developer 4.0 - 如何刪除腳本中的雙引號
謝謝
我不認爲你可以使用這些方法。他們都使用引擎蓋下的dbms_metata.get_ddl
,它似乎和doesn't have an option to not quote identifiers。看起來像導出也使用該包裝;數據建模器可以選擇引用標識符,但不確定這對您有用。
只要DDL小於32K,您可以通過從工作表中查詢來擺脫它們。在默認設置:
create table t42 (id number, str varchar2(10) default 'ABC',
constraint t42_pk primary key (id));
create index i42 on t42(str);
set long 1000
select dbms_metadata.get_ddl('TABLE', 'T42', user) from dual;
select dbms_metadata.get_dependent_ddl('INDEX', 'T42', user) from dual;
CREATE TABLE "STACKOVERFLOW"."T42"
( "ID" NUMBER,
"STR" VARCHAR2(10) DEFAULT 'ABC',
CONSTRAINT "T42_PK" PRIMARY KEY ("ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
TABLESPACE "USERS" ENABLE
) SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
TABLESPACE "USERS"
CREATE UNIQUE INDEX "STACKOVERFLOW"."T42_PK" ON "STACKOVERFLOW"."T42" ("ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255
TABLESPACE "USERS"
CREATE INDEX "STACKOVERFLOW"."I42" ON "STACKOVERFLOW"."T42" ("STR")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
TABLESPACE "USERS"
隨着一點點的操作:
begin
dbms_metadata.set_transform_param(dbms_metadata.SESSION_TRANSFORM,
'PRETTY', false);
dbms_metadata.set_transform_param(dbms_metadata.SESSION_TRANSFORM,
'SQLTERMINATOR', true);
dbms_metadata.set_transform_param(dbms_metadata.SESSION_TRANSFORM,
'CONSTRAINTS_AS_ALTER', true);
dbms_metadata.set_transform_param(dbms_metadata.SESSION_TRANSFORM,
'SEGMENT_ATTRIBUTES', false);
end;
/
select replace(dbms_metadata.get_ddl('TABLE', 'T42', user), '"', null)
from dual;
select replace(dbms_metadata.get_dependent_ddl('INDEX', 'T42', user), '"', null)
from dual;
CREATE TABLE STACKOVERFLOW.T42 (ID NUMBER, STR VARCHAR2(10) DEFAULT 'ABC') ;
ALTER TABLE STACKOVERFLOW.T42 ADD CONSTRAINT T42_PK PRIMARY KEY (ID) ENABLE;
CREATE UNIQUE INDEX STACKOVERFLOW.T42_PK ON STACKOVERFLOW.T42 (ID) ;
CREATE INDEX STACKOVERFLOW.I42 ON STACKOVERFLOW.T42 (STR) ;
他們是一個問題嗎?就我個人而言,我覺得它們很醜陋,只要你沒有混合大小寫標識符或其他任何需要引用的東西,但是它們在腳本中受到傷害,就不需要它們了?你還可以澄清你是如何產生這個的 - 從查看錶的'SQL'選項卡或通過你自己的'dbms_metadata'命令? –
當我點擊表格時,選擇SQL選項卡,這裏顯示的腳本包含雙引號。或者當我右鍵單擊表格並選擇Quick DDL時,引號也包含在這裏。 – sydney
我通常會做的首先檢查是否沒有任何有問題的標識符(例如'「UglyCamelCase」'),如果沒有任何標識符,我會執行搜索和替換來刪除'''',然後突出顯示代碼並反覆按Ctrl +'將案例更改爲所需的標準,然後保存該腳本並將其簽入源代碼管理,以便我再也不必這樣做:) –