DBMS_METADATA:使用触发器

时间:2015-08-05 12:49:03

标签: database oracle metadata dbms-metadata sxml

我想使用这个简单的函数读取表的SXML表示:

CREATE OR REPLACE FUNCTION get_table_sxml(name IN VARCHAR2) RETURN CLOB IS
   open_handle          NUMBER;
   transform_handle     NUMBER;
   doc                  CLOB;
BEGIN
   open_handle := DBMS_METADATA.OPEN('TABLE');
   DBMS_METADATA.SET_FILTER(open_handle,'NAME',name);
   transform_handle := DBMS_METADATA.ADD_TRANSFORM(open_handle, 'SXML');
   dbms_metadata.set_transform_param(transform_handle,'REF_CONSTRAINTS', true);
   dbms_metadata.set_transform_param(transform_handle,'CONSTRAINTS', true);
   doc := DBMS_METADATA.FETCH_CLOB(open_handle);
   DBMS_METADATA.CLOSE(open_handle);
   RETURN doc;
END;

当我用“ SELECT get_table_sxml('TABLENAME')FROM dual ”选择生成的XML时,我得到完整的xml表示,包括约束和ref约束。

但是输出中缺少与此表关联的触发器。

任何人都可以给我一个提示,我必须做什么才能将触发器输入到output-xml中?

生成的XML应该在另一个数据库上使用,以比较表并使用DBMS_METADATA包构建diff-scripts。所以我需要使用“sxml”格式。

0 个答案:

没有答案