一つの方法は、使用することですDBMS_SQL.DESCRIBE_COLUMNS
:
表:
CREATE TABLE emp_tab (fname VARCHAR2(25),
lname VARCHAR2(25),
age NUMBER,
salary NUMBER
);
問合せ:
DECLARE
cur PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
cols DBMS_SQL.DESC_TAB;
ncols PLS_INTEGER;
BEGIN
DBMS_SQL.PARSE(cur, 'SELECT fname,lname, age, salary FROM emp_tab'
, DBMS_SQL.NATIVE);
DBMS_SQL.DESCRIBE_COLUMNS (cur, ncols, cols);
FOR i IN 1 .. ncols LOOP
DBMS_OUTPUT.PUT_LINE ('Column name:'|| cols(i).col_name || ' Column type:'
|| cols(i).col_type || ' Max column length:' || cols(i).col_max_len);
END LOOP;
DBMS_SQL.CLOSE_CURSOR (cur);
END;
/
出力:
Column name:FNAME Column type:1 Max column length:25
Column name:LNAME Column type:1 Max column length:25
Column name:AGE Column type:2 Max column length:22
Column name:SALARY Column type:2 Max column length:22