sql - XMLELEMENT SQL 函数名是否允许冒号
问题描述
我正在使用 IBMi 7.3:DB2 for i SQL 参考。XMLELEMENT 函数的文档是这样的:
XMLELEMENT ( NAME element-name ...
元素名称定义为:
NAME element-name 指定 XML 元素的名称。该名称是一个 SQL 标识符,必须采用 XML 限定名或 QName 的形式。有关有效名称的更多详细信息,请参阅 W3C XML 命名空间规范。如果名称是合格的,则必须在范围内声明命名空间前缀
到目前为止我找到的示例(在 DB2 中我参考:https ://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzscaxmlelem.htm和 DB2 LUW 参考https://www.ibm.com/support /knowledgecenter/en/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0022188.html)总是在引号中指定元素名称。
例子:
SELECT E.EMPNO, E.FIRSTNME, E.LASTNAME,
XMLELEMENT(NAME "foo:Emp",
XMLNAMESPACES(’http://www.foo.com’ AS "foo"),
XMLATTRIBUTES(E.EMPNO AS "serial"),
E.FIRSTNME, E.LASTNAME
OPTION EMPTY ON NULL) AS "Result"
FROM SESSION.CANDIDATES E
没有明确提到它可以不带引号。还有显示在名称中使用冒号的示例。但是当我在 IBM i(绿屏)上尝试它时,它显示了Invalid SQL Name的消息。是否可以在名称中使用不带引号的冒号。
解决方案
XML 元素名称区分大小写...
XMLELEMENT(NAME cef, e.firstname)
结果是<CEF>Charles</CEF>
XMLELEMENT(NAME "cef", e.firstname)
结果是<cef>Charles</cef>
哪些不一样。
中的冒号:CITY
仅适用于嵌入在 RPGLE 或其他语言中的 SQL。
我不相信你可以在元素名称中使用冒号,除非你使用命名空间,在这种情况下你需要引号。
从文档
SELECT E.EMPNO, E.FIRSTNME, E.LASTNAME,
XMLELEMENT(NAME "foo:Emp"
, XMLNAMESPACES(’http://www.foo.com’ AS "foo")
, XMLATTRIBUTES(E.EMPNO AS "serial")
, E.FIRSTNME, E.LASTNAME
OPTION NULL ON NULL) AS "Result"
FROM SESSION.CANDIDATES E
推荐阅读
- coq - coq 中的通用平等提升
- c# - Unity C#如何在另一个脚本中引用下标?
- vue.js - 在模板中,如何使用导入的函数?
- ios - 在 TableView 中显示城市名称
- extjs - Extjs 将另一个商店作为另一个属性绑定到网格
- sql - 如何在 SQL Server 的表列中添加从父 JSON 读取的 JSON 值?
- python - 如何在 Tensorflow 2.0 中获取其他指标(不仅是准确性)?
- php - While Loop 仅在与 AJAX PHP 一起使用时更新第一行数据
- android - 默认启动器设置存储在哪里,并将 apk 直接安装到文件系统中
- excel - Google 表格 - 传递来自不同表格的信息