nir*_*ack 2 oracle rdbms plsql database-administration oracle11g
我想要DDL表格,以便我可以使用UTLOracle中的Package 将它放到数据库服务器上.
问题是:当我们
select dbms_metadata.get_ddl('TABLE','Table_name','Schema_Name')
from dual;
Run Code Online (Sandbox Code Playgroud)
我得到一个包含CLOB之前的输出CREATE.喜欢
"(CLOB)
CREATE TABLE "SCHEMA"."TABLE_NAME"
(TABLE_COLUMNS.....) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "INTF_DATA01" ;"
Run Code Online (Sandbox Code Playgroud)
我要的是上面DDL没有CLOB,没有的参数,例如SEGMENT CREATION,PCTFREE...等等.
很高兴得到建议.
我们可以使用DBMS_METADATA.SET_TRANSFORM_PARAM方法来控制生成的DDL中包含的子句.
例如,为了排除SEGMENT的东西你将执行它
exec dbms_metadata.set_transform_param
(dbms_metadata.session_transform,'SEGMENT_ATTRIBUTES',false);
Run Code Online (Sandbox Code Playgroud)
在你执行你的get_ddl()电话之前.
包文档列出了所有可用的Trandformation参数.了解更多.
我认为亚历克斯是对的,前面的"(CLOB)"是你的客户在输出之前的东西.但它是真实的,而不是一个人工制品摆脱它将是一个简单的字符串操作:
substr(your_string, 7)
Run Code Online (Sandbox Code Playgroud)