我是 SAP HANA 中 SQL 世界的新手。我正在尝试将虚拟函数的结果处理为 XMLTABLE,以便生成我所接收的数据的更易于理解的视图。
我尝试使用下一个脚本:
SELECT XTABLE.* FROM
(SELECT SOAP_BODY FROM "ABASTECIMIENTO_DEV"."INICIATIVA_310_MBTU_invoke"('<SOAP_PARAMETERS>')) SOAP,
XMLTABLE (
'/doc/item' PASSING SOAP.SOAP_BODY
COLUMNS
"id" NVARCHAR(10) path 'id'
) XTABLE;
我期望发生的是它应该返回一个只有一列名为“id”的表。相反,我收到了下一个错误:
Error: (dberror) 259 - invalid table name: table does not exist > SOAP: line 4 col 24 (at pos 409)
有没有可能将子查询的结果传递到xmltable中?
错误告诉您它正在第 4 行查找名为
SOAP
的表
如果你看第 4 行,肯定有对
SOAP.SOAP_BODY
的引用
其中的第一部分(句点之前)是表名称或表别名。
因此,您需要在代码中向上查找是否使用了名为“SOAP”的表,或者创建了表别名
SOAP
- 没有名为“SOAP”的表,也没有别名“SOAP” ”
因此,由于您不需要名为“SOAP”的实际表,因此您需要声明一个表别名。
SELECT XTABLE.*
FROM (
SELECT SOAP_BODY
FROM "ABASTECIMIENTO_DEV"."INICIATIVA_310_MBTU_invoke"('<SOAP_PARAMETERS>')) AS SOAP -- alias
, XMLTABLE (
'/doc/item' PASSING SOAP.SOAP_BODY -- refers to alias
COLUMNS
"id" NVARCHAR(10) path 'id'
) AS XTABLE
如果您仍然没有取得进展,请运行以下命令:
SELECT SOAP_BODY FROM "ABASTECIMIENTO_DEV"."INICIATIVA_310_MBTU_invoke"('<SOAP_PARAMETERS>');
确定您是否收到有效的 XML。