오라클,PLSQL,DBMS_SQL.DESCRIBE_COLUMNS, 컬럼정보출력, DESC_TAB, DESC_REC, 오라클교육, SQL교육, 자바교육, 오라클학원, SQL학원, 자바학원
http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=730
ojc.asia
https://www.youtube.com/watch?v=0CYrvAWrBjk&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=43

http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=731
ojc.asia
https://www.youtube.com/watch?v=XJOkRPZYSYo&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=42

https://www.youtube.com/watch?v=tO4rkJAC7FM&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=40

오라클 PL/SQL
DBMS_SQL.DESCRIBE_COLUMNS
(컬럼정보 출력)
실습
DBMS_SQL.DESCRIBE_COLUMNS 프로시저 : 컬럼의 정보를 DESC_REC 레코드 타입의 배열 형태인 DESC_TAB(OUT 타입) 변수에 담아두면 호출한 쪽에서 꺼내서 사용한다.
DBMS_SQL.DESCRIBE_COLUMNS ( c IN INTEGER, col_cnt OUT INTEGER, desc_t OUT DESC_TAB); | OPEN되고 파싱되는 커서의 컬럼을 정의. 컬럼의 정보를 배열에 담는다. c : 커서, col_cnt : 컬럼 개수 desc_r : 컬럼의 정의를 담을 배열 DESC_TAB 타입은 DESC_REC를 담고 있는 오라클 테이블 타입(배열) DESC_REC 에는 col_type, col_maxlen, col_name, col_name_len, col_schema_name, col_schema_name_len, col_precision, col_scale 등의 속성이 있다. |
[실습 : DBMS_SQL.DECRIBE_COLUMNS 실습]
CREATE OR REPLACE PROCEDURE desc_query( p_sql IN VARCHAR2 ) AUTHID CURRENT_USER --프로시저 실행시 컴파일 사용자가 아닌 현재 접속사용자로 실행, 기본은 AUTHID DEFINER IS v_cursor INTEGER; v_colcnt NUMBER DEFAULT 0; v_cnt NUMBER DEFAULT 0; v_descrectable dbms_sql.desc_tab; BEGIN -- SQL실행을 위한 커서 오픈ㅡ 커서ID 리턴 v_cursor := dbms_sql.open_cursor; dbms_sql.parse( v_cursor, p_sql, dbms_sql.NATIVE ); -- 커서 SQL의 컬럼정보 셋팅, v_colcnt에 컬럼개수 셋팅, v_descrectable 배열에 컬럼정보셋팅 dbms_sql.describe_columns(v_cursor, v_colcnt, v_descrectable ); -- 컬럼개수만큼 반복하면서 정보 출력 FOR I IN 1 .. v_colcnt LOOP dbms_output.put_line( 'Column Type:' || v_descrectable(I).col_type ); dbms_output.put_line( 'Max Length:' || v_descrectable(I).col_max_len ); dbms_output.put_line( 'Name:' || v_descrectable(I).col_name ); dbms_output.put_line( 'Name Length:' || v_descrectable(I).col_name_len ); dbms_output.put_line( 'Precision:' || v_descrectable(I).col_precision ); –전체 dbms_output.put_line( 'Scale:' || v_descrectable(I).col_scale ); –소수자리 IF ( v_descrectable(I).col_null_ok ) THEN dbms_output.put_line( 'Null허용:Y' ); ELSE dbms_output.put_line( 'Null허용:N' ); END IF; dbms_output.put_line( '-------------------------------'); END LOOP; -- 커서 CLOSE dbms_sql.close_cursor(v_cursor); EXCEPTION WHEN OTHERS THEN dbms_output.put_line(sqlerrm); IF dbms_sql.is_open(v_cursor) THEN dbms_sql.close_cursor(v_cursor); END IF; END desc_query; exec desc_query('select empno, ename, sal from emp'); Column Type:2 Max Length:22 Name:EMPNO Name Length:5 Precision:4 Scale:0 Null허용:N ------------------------------- Column Type:1 Max Length:10 Name:ENAME Name Length:5 Precision:0 Scale:0 Null허용:Y ------------------------------- Column Type:2 Max Length:22 Name:SAL Name Length:3 Precision:7 Scale:2 Null허용:Y ------------------------------- |
#오라클,#PLSQL,#DBMS_SQL.#DESCRIBE_COLUMNS, #DESC_TAB, #DESC_REC, #오라클교육, #SQL교육, #자바교육, #오라클학원, #SQL학원, #자바학원, 오라클,PLSQL,DBMS_SQL.DESCRIBE_COLUMNS, DESC_TAB, DESC_REC, 오라클교육, SQL교육, 자바교육, 오라클학원, SQL학원, 자바학원,