Ваш XML объявляет пространство имен, но ни один из узлов не использует его явно, поэтому вашему XPath это тоже не нужно. Таким образом, вы можете объявить его в своем операторе как пространство имен по умолчанию , а не с идентификатором:
select ackd.bicorbie
from doctest
cross join xmltable (
xmlnamespaces (default 'urn:iso:std:iso:20022:tech:xsd:pain.002.001.03'),
'/Document'
passing payload
columns
bicorbie varchar2(20) path 'CstmrPmtStsRpt/GrpHdr/InitgPty/Id/OrgId/BICOrBEI'
) ackd;
BICORBIE
--------------------
BARCGB22
Вы можете по-прежнему объявить его как "b"
, если вы хотите, но тогда вы должны включить его в качестве префикса для каждого узла:
select ackd.bicorbie
from doctest
cross join xmltable(
xmlnamespaces ('urn:iso:std:iso:20022:tech:xsd:pain.002.001.03' as "b"),
'/b:Document'
passing payload
columns
bicorbie varchar2(20) path 'b:CstmrPmtStsRpt/b:GrpHdr/b:InitgPty/b:Id/b:OrgId/b:BICOrBEI'
) ackd;
BICORBIE
--------------------
BARCGB22
Здесь проще использовать значение по умолчанию.