Sql 我可以在Oracle的SELECT语句中为游标中的列设置别名吗?

Sql 我可以在Oracle的SELECT语句中为游标中的列设置别名吗?,sql,oracle,select,cursor,alias,Sql,Oracle,Select,Cursor,Alias,我正在编写一个客户端应用程序,它通过select语句从Oracle数据库调用存储过程。存储过程返回一个游标。我需要为该游标返回的列定义别名,并且需要在select语句中定义别名 我无法对Oracle数据库进行任何更改。我不能写任何PLSQL。我唯一能用这个数据库做的就是查询它 请告知 背景:此存储过程是应用程序框架内调用的众多存储过程之一。目前,所有调用都以XML格式返回结果,并使用以下语法进行转换: select XMLType.createXML(package_name.storedPro

我正在编写一个客户端应用程序,它通过select语句从Oracle数据库调用存储过程。存储过程返回一个游标。我需要为该游标返回的列定义别名,并且需要在select语句中定义别名

我无法对Oracle数据库进行任何更改。我不能写任何PLSQL。我唯一能用这个数据库做的就是查询它

请告知

背景:此存储过程是应用程序框架内调用的众多存储过程之一。目前,所有调用都以XML格式返回结果,并使用以下语法进行转换:

select XMLType.createXML(package_name.storedProcName('1', '2', '3')).getClobVal() as sresult  from dual;
但是,此游标包含两个同名的列。在TOAD中运行此查询时,列会自动附加一个_1,但是XMLType会导致不符合逻辑的XML,如下所示:

<?xml version="1.0"?>
<ROWSET>
    <ROW>
        <ID>1</ID>
        <NAME>BRUCE WAYNE</NAME>
        <NAME>BATMAN</NAME>
    </ROW>
</ROWSET>
这就是为什么在将列转换为XMLType之前必须对其进行别名。我希望查询输出不包含重复的列名,这样XML就可以像这样,没有重复的标记:

<?xml version="1.0"?>
<ROWSET>
    <ROW>
        <ID>1</ID>
        <NAME>BRUCE WAYNE</NAME>
        <OTHER_NAME>BATMAN</OTHER_NAME>
    </ROW>
</ROWSET>

我会为这个设计一个样式表

例如:


i、 e.我们用NAME_1替换ROW元素中的第二个名称occurrence/ROWSET/ROW/NAME[2]。其他所有内容都按原样复制。

请发布当前代码的演示版本。我发现很难想象您要做什么。我在问题的背景下发布了select语句,以及XML直接来自查询的结果。我不确定我还能提供什么。。。是否要查看存储过程的代码?谢谢!工作起来很有魅力!
SQL> select XMLType.createXML(foo()).transform(xmltype('<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  2  <xsl:template match="/ROWSET/ROW/NAME[2]">
  3     <NAME_1>
  4             <xsl:apply-templates select="@*|node()"/>
  5     </NAME_1>
  6  </xsl:template>
  7  <xsl:template match="@*|node()">
  8     <xsl:copy>
  9             <xsl:apply-templates select="@*|node()"/>
 10     </xsl:copy>
 11  </xsl:template>
 12  </xsl:stylesheet>')) as sresult  from dual
 13  /

SRESULT
--------------------------------------------------------------------------------
<ROWSET>
  <ROW>
    <ID>1</ID>
    <NAME>BRUCE WAYNE</NAME>
    <NAME_1>BATMAN</NAME_1>
  </ROW>
  <ROW>
    <ID>2</ID>
    <NAME>CLARK KENT</NAME>
    <NAME_1>SUPERMAN</NAME_1>
  </ROW>
</ROWSET>