简体   繁体   English

如何将XML写入文件(PL / SQL)?

[英]How to write XML to file (PL/SQL)?

I cannot for the life of me find out how to write this to a file, despite various attempts. 尽管进行了各种尝试,但我终生无法找到如何将其写入文件的方法。 I will apologize in advance, I am very new to XML and SQL Procedures. 我将提前致歉,我对XML和SQL过程非常陌生。 My code is currently outputting XML correctly, I am just having trouble finding out how to write it to a file and make it a procedure. 我的代码当前正确地输出XML,但是我很难找到如何将其写入文件并使其成为一个过程。

Here is a very-cut-down version (regarding the XML and select) of what I currently have: 这是我目前拥有的非常精简的版本(关于XML和select):

    PROCEDURE markviewimport_interface 
    (
    p_invoice_id number(10), 
    p_filename nvarchar(30)
    )IS

    v_xmloutput CLOB;
    --v_FILENAME VARCHAR2(100) := concat(r_markviewimport.invoice_id,'-',r_markviewimport.vendor_num,'.XML');

BEGIN
SELECT  
            XMLFOREST(
                XMLCONCAT(
                        XMLELEMENT("CREATEDBY",XMLATTRIBUTES('Exported By' AS "header"), 'Magellan IT'),
                        XMLELEMENT("TIMESTAMP",XMLATTRIBUTES('Date' AS "header"), TO_CHAR(SYSDATE,'MM.DD.YYYY')),
                        XMLFOREST(
                            XMLFOREST(
                                XMLFOREST(
                                    'invoice_id' AS "DBFIELD",
                                    'Invoice ID' AS "CAPTION",
                                    r_markviewimport.invoice_id AS "VALUE"
                                ) AS "DATA_ITEM"
                            ) AS "BASICDATA"
                        )        
                    ) AS "DATA_ROOT"
                ) 
FROM             
( 
SELECT DISTINCT inv.invoice_id FROM apps.ap_invoices_all inv WHERE inv.invoice_id = 4796324

) r_markviewimport

1) Config (Log as user with CREATE ANY DIRECTORY privileges) 1)配置(以具有CREATE ANY DIRECTORY特权的用户身份登录)

create or replace directory YOUR_DIR_NAME as '/path/../';
grant read, write on directory YOUR_DIR_NAME to your_schema;

2) Convert xml to clob and save it. 2)将xml转换为clob并保存。

declare
  v_xml_clob   clob;
begin
  select xmlserialize(document xmlelement("a", 'lalal') as clob) into v_xml_clob from dual;
  Dbms_xslprocessor.CLOB2FILE(cl => x_xml_clob, flocation => 'YOUR_DIR_NAME', fname => 'somename.xml');
end;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM