2013-02-17 68 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