1

我想自动将列别名分配给多个列。我的表通常至少有 20 列。我试图避免写“column1 AS XXX_column1,column2 AS XXX_column2 ... x20”之类的东西。

我是 PLSQL 的新手,但我希望在标准 SELECT 子句中直接使用函数返回的乘法“列 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

请有人帮我解决这个问题吗?

4

1 回答 1

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;
于 2013-02-17T13:50:41.820 回答