我有一个Oracle函数,它动态创建一个XML文档,并以SYS.XMLTYPE值返回它.
我想从SQL Developer运行一个调用该函数并打印文档的查询(通过select或dbms_output - 我不在乎).
但是所有的示例/文档似乎都是指在表中查询XML列,而我似乎无法获得适合我特定用法的语法.我想要这样的事情:
declare
x SYS.XMLTYPE;
begin
x := my_package.my_function();
select x.getclobval() from x; -- doesn't work!
end;
Run Code Online (Sandbox Code Playgroud)
如何在上面的代码中打印出XML类型变量'x'的值?
试试这个(不保证,我还没有真正使用XML的东西)
declare
x SYS.XMLTYPE;
begin
x := my_package.my_function();
dbms_output.put_line ( x.getCLOBVal() );
end;
Run Code Online (Sandbox Code Playgroud)
这是一个返回XMLType的函数...
SQL> create or replace function get_emp_xml
2 (p_eno in emp.empno%type)
3 return xmltype
4 is
5 return_value xmltype;
6 begin
7 select value(emprec) as "EMP_REC"
8 into return_value
9 from table (xmlsequence
10 (cursor
11 ( select * from emp e
12 where e.empno = p_eno
13 )
14 )
15 ) emprec
16 ;
17
18 return return_value;
19 end;
20 /
Function created.
SQL>
Run Code Online (Sandbox Code Playgroud)
从SELECT语句中查询它就像您希望的那样简单:
SQL> set long 5000
SQL>
SQL> select get_emp_xml(8060) from dual
2 /
GET_EMP_XML(8060)
--------------------------------------------------------------------------
<ROW>
<EMPNO>8060</EMPNO>
<ENAME>VERREYNNE</ENAME>
<JOB>PLUMBER</JOB>
<MGR>7839</MGR>
<HIREDATE>08-APR-08</HIREDATE>
<SAL>4500</SAL>
<DEPTNO>50</DEPTNO>
</ROW>
SQL>
Run Code Online (Sandbox Code Playgroud)
这也适用于SQL Developer.
| 归档时间: |
|
| 查看次数: |
16693 次 |
| 最近记录: |