XMLELEMENT不会在Oracle Sql Developer的输出窗口中显示任何数据

时间:2017-04-05 07:30:30

标签: sql xml oracle oracle-sqldeveloper

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

普通查询:

Promise.all([
    getBalls, 
    getKids, 
    getTeams
]).then(function ([ balls, kids, teams ]) { // <= notice the function parameters
    const new_team = doSomething(balls, kids, teams);
    resolve(new_team);
});

XML查询:

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

有什么建议我做错了吗?

1 个答案:

答案 0 :(得分:2)

您需要实际显示变量的值,您可以使用:

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),但您可以双击它以查看值,或右键单击并选择“单个记录视图”,看实际内容。