2013-02-17 52 views
1

我想要将列别名的多个列返回列名。我的桌子通常有20列。我试图避免写“column1 AS XXX_column1,column2 AS XXX_column2 ... x20”。ORACLE:使用功能在SELECT语句

我是新来PLSQL但我希望用来自乘“AS XXX_column列”按功能直接在标准的SELECT语句返回的输出。

所以我写了一个函数(返回数据类型为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; 

所以从选择输出为填充值的行列表MY_TABLE:

COLUMN simple 
ROW1 my_column 
ROW2 my_column 
ROW3 my_column 

可以请人帮助我?

+0

而不是发布一些不起眼的代码,并期待我们猜测你想要实现的目标为什么你不解释这个场景? – APC 2013-02-17 15:21:47

+0

我想自动分配列别名到多个列。我的桌子通常有20列。写一些像“column1 AS XXX_column1,column2 AS XXX_column2 ... x20”是我想要避免的。我是PLSQL的新手,但我希望使用标准SELECT子句中直接使用由函数返回的乘法“列AS XXX_column”的输出。 – zwornik 2013-02-17 22:25:08

+1

所以你的解释揭示了一个值得回答的问题。不幸的是,这个问题已经结束,所以我们无法回答,除非人们投票重新开放。这里的教导是,总是解释你想要做什么。不好或不清楚的问题寿命很短。 – APC 2013-02-18 06:59:12

回答

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; 
+0

感谢您的快速回复。您提供的SELECT语句在PLSQL块内。我正在寻找的是在标准SQL中使用我的函数(SELECT simple FROM my_table)。是否有可能做到这一点?也许使用函数返回的不同数据类型。我只是猜测。 – zwornik 2013-02-17 14:02:28

+0

恐怕动态sql不是标准的sql。 – Sebas 2013-02-17 14:03:25

+0

上下文是什么?总是有一个解决方案 – Sebas 2013-02-17 14:03:45