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',查看实际内容
我正在尝试使用 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',查看实际内容