我正在尝试使用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
有什么建议我做错了吗?
答案 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)
,但您可以双击它以查看值,或右键单击并选择“单个记录视图”,看实际内容。