2

Oracle 11g(11.1.0.7.0)を使用しており、クエリのXMLファイルを作成する必要があります。私はフォーム6でこのファイルを使用していますが、ユーザーはフォームのボタンを押している間にXMLファイルを作成できるようにしたいので、XMLデータを使用してCLOBファイルを作成するPL/SQLパッケージがあります。サーバーとForms6iを使用して、このファイル行を1行ずつ読み取り(UTL_FILE.FOPENで読み取り、UTL_FILE.GET_LINEを行で)、TEXT_IO.PUT_LINEを使用してクライアントコンピューターにファイルを書き込みます。これは素晴らしい動作をしますが、XMLファイルに問題があります。これで、次のようになります(値は例です!):

<?xml version="1.0" encoding="ISO-8859-1" ?>
<ShoeShop>
  <Article>
    <Artnumber>12345</Artnumber>
    <Artdesc>Black Shoes</Artdesc>
  </Article>
  <Article>
    <Artnumber>12346</Artnumber>
    <Artdesc>White Shoes</Artdesc>
  </Article>
</ShoeShop>

わかった。次のようなXMLファイルを作成したいのですが、方法がわかりません。私はSQL/PLSQLを初めて使用し、2か月まで学習しています。その前に、Progress4GLを使用しました。そのため、進行中は、自分がやりたいことを「ネスト」と呼んでいますが、SQL/PLSQLでそれを実現する方法がわかりません。XMLファイルの例:取得方法:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<ShoeShop>
  <Article="12345">
    <Artdesc>Black Shoes</Artdesc>
  </Article="12345">
  <Article="12346">
    <Artdesc>White Shoes</Artdesc>
  </Article="12346">
</ShoeShop>

XMLファイルを作成するためのコードスニペットは、最初の例のように見えます。

PROCEDURE XML_TO_CLOB( pi_Query      IN VARCHAR2,
                       pi_ParentNode IN VARCHAR2,
                       pi_ChildNode  IN VARCHAR2 ) IS
  qryCtx DBMS_XMLGEN.ctxHandle;
  cResult CLOB;
BEGIN
-- Create new Context for the Query
  qryCtx := DBMS_XMLGEN.newContext( pi_Query );

-- Set Parent and Child Node
  DBMS_XMLGEN.setRowSetTag( qryCtx, pi_ParentNode );
  DBMS_XMLGEN.SetRowTag( qryCtx, pi_ChildNode );

-- setNullHandling to show Tag also when the value is NULL
  DBMS_XMLGEN.setNullHandling( qryCtx, DBMS_XMLGEN.EMPTY_TAG );

-- getXML in CLOB
  cResult := DBMS_XMLGEN.getXML( qryCtx );

-- Put encoding to the "Header"
  cResult := REPLACE( cResult, '<?xml version="1.0"?>', '<?xml version="1.0" encoding="ISO-8859-1" ?>' );

-- Close Context
  DBMS_XMLGEN.closeContext( qryCtx );

-- Write the CLOB to a file on the server to work with the data in Forms 6i
  DBMS_XMSLPROCESSOR.CLOB2FILE( cResult, 'ExampleDir', 'Example.xml' );
END;

どうもありがとう、

サラ

4

1 に答える 1

1

DBMS_XMLGENを使用して、ドキュメント内にネストされたドキュメントを生成する例がいくつかあります。 例17-27を確認してください

Oracleソリューションでは、ユーザー定義型を使用して、要素ではなく属性として含まれる列など、ドキュメントの形状を指定します。これは、予想よりも多くのインフラストラクチャである可能性があります。

于 2012-09-25T13:52:23.240 に答える