我需要在oracle表中为我的select查询获取第一列,即来自TABLE的SELECT FIRST_COLUMN . 我怎样才能做到这一点?我无法访问SYS表,即无法访问user_tab_columns这样的表 . 有可能这样做吗?
您始终可以访问USER_TAB_COLUMNS .
如果DBA试图撤销它,会有太多东西中断 .
听起来你访问非常有限 . 如果您的帐户可以访问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交谈可能更简单
2 回答
您始终可以访问USER_TAB_COLUMNS .
如果DBA试图撤销它,会有太多东西中断 .
听起来你访问非常有限 . 如果您的帐户可以访问DBMS_SQL,您可以尝试以下操作:
这可以包装到PL / SQL函数中 . 与您的DBA交谈可能更简单