gpt4 book ai didi

oracle - 来自 dbms_metadata.get_ddl 的自定义表 DDL

转载 作者:行者123 更新时间:2023-12-01 08:10:17 24 4
gpt4 key购买 nike

我要 DDL s of Tables 以便我可以使用 UTL 将其放入数据库服务器Oracle 中的包。

问题是:当我们

select dbms_metadata.get_ddl('TABLE','Table_name','Schema_Name') 
from dual;

我得到一个包含 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" ;"

我要的是上面的 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);

在执行您的 get_ddl() 之前称呼。

包文档列出了所有可用的 Transformation 参数。 Find out more .

我认为亚历克斯是对的,前面的“(CLOB)”是您的客户在输出之前的内容。但它是真实的而不是人工制品,摆脱它只是一个简单的字符串操作:
substr(your_string, 7) 

关于oracle - 来自 dbms_metadata.get_ddl 的自定义表 DDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14604827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com