使用索引的ORACLE Get_DLL for Constraint

时间:2014-06-18 14:57:42

标签: oracle constraints ddl

我试图从Oracle中导出一些约束DDL:

EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'TABLESPACE',false);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',false);

EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',true);

 DBMS_METADATA.GET_DDL
           ( 'CONSTRAINT',MYCONSTRAINT, ME);

我得到了

 ALTER TABLE "ME"."MYTABLE" ADD CONSTRAINT "MYCONSTRAINT" PRIMARY KEY
 ("COL1") ENABLE;

我想要

ALTER TABLE "ME"."MYTABLE" ADD CONSTRAINT "MYCONSTRAINT" PRIMARY KEY ("COL1") USING INDEX MYINDEX);

我在Oracle 11.2的文档中找不到任何选项: http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_metada.htm#BGBJBFGE

知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助,或者让你非常接近:

SELECT REPLACE(dbms_metadata.get_ddl('CONSTRAINT', constraint_name, USER)
                 ,' USING INDEX '
                 ,' USING INDEX "' || index_name || '" ' ) ddl
  FROM user_constraints
  WHERE index_name IS NOT NULL
    AND constraint_name NOT LIKE 'BIN$%';