これは、実行しようとしているオラクルクエリであり、実行ごとに異なる出力が得られます。最初の実行では正しいxml
リクエストが返され、その後のすべてのリクエストでは null が返されます。また、怖いのは、xml
要素名を から"PHONE"
に変更する"PHONE1"
と、初回のみ、およびNULL
後続の要求に対して再び出力が得られることです。
また、(テーブルに存在する同じ値)の値をハードコードするCLI_PHONENUMBER
と、常に正しい出力が得られます。
SELECT
CASE
WHEN REGEXP_REPLACE(CLI_PHONENUMBER,'[^0-9]+', '') IS NOT NULL
AND CLI_PHONENUMBER <>'000000000000000'
THEN XMLELEMENT("PHONE",
XMLELEMENT("PHONETYPECODE",
CASE
WHEN regexp_like( REGEXP_REPLACE(CLI_PHONENUMBER,'[^0-9]+', ''), '^02[0-9]+')
THEN 'MOB'
ELSE 'BUSN' END),
XMLELEMENT("AREACODE", NULL),
XMLELEMENT("COUNTRYCODE",'64'),
XMLELEMENT("PHONENUMBER", REGEXP_REPLACE(CLI_PHONENUMBER,'[^0-9]+', '')),
XMLELEMENT("PRIMARYFLAG",NULL)
)
END
FROM CLI_CLIENT
WHERE CLI_COMPANY = 'AON'
AND CLI_BRANCH = 'WTP'
AND CLI_CLIENTNUMBER = '05QSZ';