2010-12-16 163 views
2

我需要在我的選擇查詢 即從表中選擇FIRST_COLUMN的Oracle表中獲得第一列。我怎樣才能做到這一點?我無權訪問SYS表,即無法訪問像user_tab_columns這樣的表。是否有可能這樣做?如何獲得oracle表中的第一列?

+0

在什麼情況下你想要實現這一目標? Straight SQ,PL/SQL還是3GL? – stjohnroe 2010-12-16 12:36:05

+0

不知道我明白你想要在這裏存檔。如果您正在使用SQL工具,只需執行'select * from table'並選擇一個您喜歡的。 – bert 2010-12-16 12:37:12

+2

此外,您不應該依賴列的「順序」......它可能隨時間而改變。唯一的好方法是通過名字請求一個列。 – guigui42 2010-12-16 12:45:26

回答

1

聽起來像你有非常有限的訪問。如果您的帳戶可以訪問DBMS_SQL,則可以嘗試以下操作:

declare 
lv_stat VARCHAR2(300) := 'SELECT * FROM tablename'; 
lv_cid integer; 
lv_tab DBMS_SQL.DESC_TAB; 
lv_cnt int; 
begin 
    lv_cid := DBMS_SQL.OPEN_CURSOR; 
    DBMS_SQL.PARSE(lv_cid,lv_stat,DBMS_SQL.NATIVE); 
    DBMS_SQL.DESCRIBE_COLUMNS(lv_cid,lv_cnt,lv_tab); 
    DBMS_OUTPUT.PUT_LINE('First Column is '||lv_tab(1).col_name); 
    DBMS_SQL.CLOSE_CURSOR(lv_cid); 
    EXCEPTION 
    when others then 
    DBMS_SQL.CLOSE_CURSOR(lv_cid); 
end; 

這可以封裝到PL/SQL函數中。可能更容易與您的DBA交談

3

您總是可以訪問USER_TAB_COLUMNS。

如果DBA試圖吊銷它,則會有太多內容中斷。