我正在运行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 +'将案例更改为所需的标准,然后保存该脚本并将其签入源代码管理,以便我再也不必这样做:) –