OracleのXMLType関数を使用して、カーソルを返すストアドプロシージャからXMLデータを取得しています。私のSQLは次のようになります。
select
XMLType(
package_name.storedProcName('PARAM1', 'PARAM2', 'PARAM3')
) as sresult
from dual;
ストアドプロシージャがレコードを返す場合、これは正常に機能し、期待どおりのXML結果が得られます。ただし、プロシージャがレコードを返さない場合、次のエラーが発生します。
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.XMLTYPE", line 334
ORA-06512: at line 1
この場合、null、空白の文字列、またはその他の値を返すことが望ましいです。確かに、これが発生するたびにOracle例外が発生するのは避けたいと思います。これを達成するために何ができますか?
明確化:私の問題は、ストアドプロシージャが空のカーソルを返すと、XMLTypeコンストラクターが例外を発生させることです。SQLクエリ内の空のカーソルを検出するにはどうすればよいですか?(残念ながら、私にはOracle側でプログラミングする余裕がありません。Javaクライアントをプログラミングしています。)