XMLELEMENT 不在 Oracle Sql 开发人员的输出 window 中显示任何数据

XMLELEMENT doesnot display any data in the output window of Oracle Sql Developer

我正在尝试使用 Oracle 的 XMLELEMENT 函数创建一个 XML 并在测试查询时它工作正常,但是一旦我添加了 XMLELEMENT功能,它不显示任何数据。这是我正在做的事情:

正常查询:

SELECT NAME from sysadm.USER where ID = '121';
**Output** - Sahil

XML 查询:

SET SERVEROUTPUT ON
DECLARE 
nametag xmltype;
BEGIN
  SELECT XMLELEMENT("USERNAME", NAME) into nametag from sysadm.USER where ID = '121';
END;

**Output** - anonymous block completed

有什么建议我做错了什么吗?

您需要实际显示变量的值,您可以这样做:

SET SERVEROUTPUT ON
DECLARE 
nametag xmltype;
BEGIN
  SELECT XMLELEMENT("USERNAME", NAME) into nametag from sysadm.USER where ID = '121';
  DBMS_OUTPUT.PUT_LINE(nametag.getstringval());
END;

至少只要生成的字符串小于32k。但是除了真正的调试之外,应该避免使用 dbms_output,因为您通常无法控制调用您的代码的其他人是否启用了服务器输出。

您也可以使用绑定变量,例如:

VAR result CLOB;

DECLARE 
nametag xmltype;
BEGIN
  SELECT XMLELEMENT("USERNAME", NAME) into nametag from sysadm.USER where ID = '121';
  :result := nametag.getclobval();
END;
/

print result

虽然您根本不需要使用 PL/SQL 块 - 您可以这样做:

SELECT XMLELEMENT("USERNAME", NAME) from sysadm.USER where ID = '121';

可选择添加 .getclobval().getstringval() 来更改输出。根据生成的 XML 的长度,您可能需要 set long 更高的值才能在工作表中显示所有内容。如果您 运行 作为语句而不是脚本,查询结果输出网格将只显示 (XMLTYPE),但您可以双击它来查看值,或者右键单击并选择 'single record view',查看实际内容