2012-12-19 47 views
1

我有一個函數,我想在運行時確定列的名稱。爲此,我傳遞一個變量作爲參數,如column_nameOracle函數動態列

下面是與功能的代碼:

l_column_name as varchar2(100) 

Begin 

If(column_name='emp_name') 
    Then 
    l_column_name:=EMPLOYEE.EMP_NAME 
End If; 

    begin 
select l_column_name from employee 
end; 

在上面的代碼中,l_column_name:=EMPLOYEE.EMP_NAME正在給誤差

不允許在此上下文中。

任何幫助是非常appreicated。

問候, Chaitu

回答

4

由於錯誤說,你不能做到這一點。

你需要考慮使用PL/SQL執行即時:http://docs.oracle.com/cd/B14117_01/appdev.101/b10807/13_elems017.htm

declare 
    l_column_name as varchar2(100); 
    l_column_results as VARCHAR2(100); 
begin 
    if (column_name = 'emp_name') then 
    l_column_name := 'EMPLOYEE.EMP_NAME'; 
    end if; 
    query := 'SELECT ' || l_column_name || ' from employeee'; 
    EXECUTE IMMEDIATE query INTO l_column_results; 
end; 
+0

是爲作品與立即執行? – user1726550

+0

是的,這是將查詢結果返回到pl/sql代碼的唯一方法。 –