열 이름을 얻기 위해 쿼리를 실행할 필요가 없습니다. 구문 분석 만하면됩니다. 예 :
set serveroutput on
declare
l_statement varchar2(4000) := 'select * from employees';
l_c pls_integer;
l_col_cnt pls_integer;
l_desc_t dbms_sql.desc_tab;
begin
l_c := dbms_sql.open_cursor;
dbms_sql.parse(c=>l_c, statement=>l_statement, language_flag=>dbms_sql.native);
dbms_sql.describe_columns(c=>l_c, col_cnt=>l_col_cnt, desc_t=>l_desc_t);
for i in 1..l_col_cnt loop
dbms_output.put_line(l_desc_t(i).col_name);
end loop;
dbms_sql.close_cursor(l_c);
exception
when others then
if (dbms_sql.is_open(l_c)) then
dbms_sql.close_cursor(l_c);
end if;
raise;
end;
/
출력 : 간단한 예로서
EMPLOYEE_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID
SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID
PL/SQL procedure successfully completed.
당신은 루프 내부의 열 이름에 무엇을해야 확인 할 수 있습니다.
열 수식의 열 이름이나 별칭 만 표시되며 실제로 검색되는 데이터는 반영되지 않습니다. 액세스 권한이있는 곳이면 어디에서나 데이터를 가져 오지만 유효하다고 간주되는 열/표현 별칭을 제공하는 쿼리를 만들 수 있습니다.
특정 데이터에 대한 액세스를 제한하려는 경우 등 뷰와 같은 다른 메커니즘, 가상 개인 데이터베이스, 조사
질문과 관련하여 질문을 읽었지만 'parse'는 DDL을 실행하므로 잊지 마세요. –