0
1.次のコードでは、出力が得られません。このコードを実行した後にDBMS出力ウィンドウに何も表示されません。何が問題なの? 2.属性[@ id = "1"]を参照して名前を1つだけ取得しようとしましたが、すべての名前を取得できますか?plsqlでXMLTABLEを使用してXSL変換を実行するにはどうすればよいですか?
declare
x varchar(100);
c1 sys_refcursor;
xml clob:=
'<?xml version="1.0"?>
<Com>
<Employee id="1">
<Name>John</Name>
<Age>21</Age>
<Phone>111111111</Phone>
</Employee>
<Employee id="2">
<Name>Adam</Name>
<Age>22</Age>
<Phone>22222222</Phone>
</Employee>
<Employee id="3">
<Name>David</Name>
<Age>22</Age>
<Phone>333333333</Phone>
</Employee>
<Employee id="4">
<Name>Roy</Name>
<Age>22</Age>
<Phone>44444444</Phone>
</Employee>
</Com>';
xsl clob:=
'<?xml version="1.0"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<xsl:for-each select="Com/Employee[@id=''1'']">
<![CDATA[<Com>]]>
<xsl:value-of select="Name"/>
<![CDATA[</Com>]]>
</xsl:for-each>
</xsl:template>
</xsl:transform>';
function fun1 return sys_refcursor
as
c2 sys_refcursor;
begin
open c2 for select Names_List from XMLTABLE('/Com/Employee'
PASSING XMLTYPE(XMLTRANSFORM(xmltype(xml),xmltype(xsl)).GetClobVal())
columns Names_List varchar(100) path 'Name');
return c2;
end;
begin
c1:=fun1;
loop
fetch c1 into x;
exit when c1%notfound;
dbms_output.put_line('Names : '|| x);
end loop;
end;
'[@id = '' 1 '']'を削除して参照してください。 –