【发布时间】:2014-04-05 15:52:40
【问题描述】:
我想创建存储过程以根据给定的表名作为输入参数生成表结构的 XML 文件
我用下面的查询
select
distinct column_name,
data_type,
data_length
from all_tab_columns
where table_name =UPPER('Project')
order by column_id;
但它显示错误 ORA-00904: "项目": 无效标识符 这里 PROJECT 是我的表名
我创建了一个 Store 过程,但它显示错误
create or replace
procedure table_str (
V_TABLE_NAME IN varchar2,
v_FLAG OUT NUMBER
)
AS
BEGIN
DECLARE
xt_data xmltype;
v_ctx dbms_xmlgen.ctxHandle;
rc_data sys_refcursor;
v_file UTL_FILE.file_type;
BEGIN
-- v_file := UTL_FILE.fopen('MYXML', V_TABLE_NAME ||'.xml', 'A');
-- v_file := UTL_FILE.fopen('MYXML', V_TABLE_NAME || '.xml', 'A');
v_file := UTL_FILE.fopen('MYXML', V_TABLE_NAME || 'Layout.xml', 'W');
OPEN rc_data FOR
'select distinct column_name, data_type ,column_id
from all_tab_columns
where table_name ='||V_TABLE_NAME ||' order by column_id';
v_ctx := dbms_xmlgen.newContext (rc_data);
DBMS_XMLGEN.SETNULLHANDLING(v_ctx,null);
DBMS_XMLGEN.setrowsettag(v_ctx, V_TABLE_NAME);
DBMS_XMLGEN.setrowtag(v_ctx, null);
xt_data := dbms_xmlgen.getXMLType (v_ctx);
dbms_xmlgen.closeContext (v_ctx);
dbms_xslprocessor.clob2file(xt_data.getclobval( ), 'MYXML', V_TABLE_NAME || 'Layout.xml');
v_FLAG := 1;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
dbms_xmlgen.closeContext (v_ctx);
v_FLAG := 0;
end ;
END table_str;
请帮忙
【问题讨论】:
标签: xml oracle stored-procedures plsqldeveloper