我需要在oracle表中为我的select查询获取第一列 即从TABLE中选择FIRST_COLUMN。我怎样才能做到这一点?我无法访问SYS表,即无法访问user_tab_columns这样的表。是否可以这样做?
答案 0 :(得分:3)
您始终可以访问USER_TAB_COLUMNS。
如果DBA试图撤销它,会有太多东西中断。
答案 1 :(得分: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交谈可能更简单