ORACLE:使用SELECT语句中函数返回的列名

时间:2013-02-17 13:16:52

标签: oracle function plsql

我想自动将列别名分配给多个列。我的表通常有20列。我试图避免写一些类似“column1 AS XXX_column1,column2 AS XXX_column2 ... x20”的内容。

我是PLSQL的新手,但我希望在标准SELECT子句中直接使用函数返回的乘法“column AS XXX_column”输出。

所以我编写了一个函数(RETURN数据类型为VARCHAR2)来生成列名。我想直接在我的SELECT语句中使用它。以下是此简化示例:

---功能

CREATE OR REPLACE FUNCTION simple RETURN varchar2 IS
BEGIN
  RETURN ‘my_column’;
END simple;

---选择

SELECT simple FROM my_table;

这不起作用。似乎函数的输出作为引用传递,即

SELECT ‘my_column’ FROM my_table;

因此SELECT的输出是一个用值my_table填充的行列表:

COLUMN  simple
ROW1    my_column
ROW2    my_column
ROW3    my_column

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

CREATE OR REPLACE FUNCTION simple RETURN varchar2 IS
BEGIN
  RETURN ‘my_column’;
END simple;


--- Select
DECLARE
    myCol VARCHAR2(128);
BEGIN
    myCol := simple;
    EXECUTE IMMEDIATE 'SELECT ' || myCol || ' FROM my_table';
END;