tomblanchard
Programmer
I am trying to build a sql statement from a function that will return xml, however oracle replaces my quote with "
Here is a sample of the function:
CREATE OR REPLACE function fnDynSelect(client_id_in IN number,feed_id_in IN number, view_in_name IN varchar2) return varchar2
as
x varchar2(32767);
begin
SELECT fnColumnList(client_id_in,feed_id_in, view_in_name).transform(xmltype('<xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/">
<xsl:text>SELECT XMLELEMENT("</xsl:text>
<xsl:text>table</xsl:text>
<xsl:text>",</xsl:text>
<xsl:text>XMLAGG(XMLELEMENT("</xsl:text>
<xsl:text>row"</xsl:text>
<xsl:for-each select="package/field">
<xsl:text>,XMLELEMENT("</xsl:text>
<xsl:value-of select="."/>
<xsl:text>",</xsl:text>
<xsl:value-of select="."/>
<xsl:text>)</xsl:text>
</xsl:for-each>
<xsl:text>)))</xsl:text>
<xsl:text> FROM </xsl:text>
<xsl:value-of select="package/VIEW_IN_NAME"/>
</xsl:template>
</xsl:stylesheet>'
)).getStringVal()
into x
from
dual;
return x;
end;
This returns the following:
SELECT XMLELEMENT("table",XMLAGG(XMLELEMENT("row",XMLELEMENT
("[column1]",[column1]),XMLELEMENT("[column2]",[column1])))) FROM [vwMyView]
which does not work.
Does anyone know of a way that I can get the function to return the statement without the " or a way that I can replace it before sending it to be executed?
Thank you for any help.
Here is a sample of the function:
CREATE OR REPLACE function fnDynSelect(client_id_in IN number,feed_id_in IN number, view_in_name IN varchar2) return varchar2
as
x varchar2(32767);
begin
SELECT fnColumnList(client_id_in,feed_id_in, view_in_name).transform(xmltype('<xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/">
<xsl:text>SELECT XMLELEMENT("</xsl:text>
<xsl:text>table</xsl:text>
<xsl:text>",</xsl:text>
<xsl:text>XMLAGG(XMLELEMENT("</xsl:text>
<xsl:text>row"</xsl:text>
<xsl:for-each select="package/field">
<xsl:text>,XMLELEMENT("</xsl:text>
<xsl:value-of select="."/>
<xsl:text>",</xsl:text>
<xsl:value-of select="."/>
<xsl:text>)</xsl:text>
</xsl:for-each>
<xsl:text>)))</xsl:text>
<xsl:text> FROM </xsl:text>
<xsl:value-of select="package/VIEW_IN_NAME"/>
</xsl:template>
</xsl:stylesheet>'
)).getStringVal()
into x
from
dual;
return x;
end;
This returns the following:
SELECT XMLELEMENT("table",XMLAGG(XMLELEMENT("row",XMLELEMENT
("[column1]",[column1]),XMLELEMENT("[column2]",[column1])))) FROM [vwMyView]
which does not work.
Does anyone know of a way that I can get the function to return the statement without the " or a way that I can replace it before sending it to be executed?
Thank you for any help.