select
ステートメントを介して Oracle データベースからストアド プロシージャを呼び出すクライアント アプリケーションを作成しています。ストアド プロシージャはカーソルを返します。このカーソルによって返される列のエイリアスを定義する必要があり、select
ステートメント内でそれを行う必要があります。
Oracle データベースに変更を加えることができません。PLSQLを書くことができません。このデータベースでできることは、クエリを実行することだけです。
お知らせ下さい。
背景:このストアド プロシージャは、アプリケーション フレームワーク内で呼び出される多くのプロシージャの 1 つです。現在、すべての呼び出しは、次の構文を使用して変換を行い、結果を XML 形式で返します。
select XMLType.createXML(package_name.storedProcName('1', '2', '3')).getClobVal() as sresult from dual;
ただし、このカーソルには、同じ名前 (具体的には "NAME") を持つ 2 つの列が含まれています。このクエリを TOAD で実行すると、列に自動的に「_1」が追加されますが、XMLType は次のように非論理的な XML になります。
<?xml version="1.0"?>
<ROWSET>
<ROW>
<ID>1</ID>
<NAME>BRUCE WAYNE</NAME>
<NAME>BATMAN</NAME>
</ROW>
</ROWSET>
このため、列を XMLType に変換する前に列に別名を付ける必要があります。クエリ出力に重複する列名が含まれないようにして、代わりに XML を次のようにします (タグの重複なし):
<?xml version="1.0"?>
<ROWSET>
<ROW>
<ID>1</ID>
<NAME>BRUCE WAYNE</NAME>
<OTHER_NAME>BATMAN</OTHER_NAME>
</ROW>
</ROWSET>