태그 미디어로그 위치로그
'iSQL'에 해당되는 글 1건
iSQL에서 로우를 세로로 출력 (SET VERTICAL ON)
개발자 세상

딕셔너리 테이블 조회나 퍼포먼스 뷰와 같이 칼럼은 많은데, 막상 확인할 레코드의 수는 적은 경우, 라인 사이즈 제약으로 줄바꿈이 일어나 보기 어려워지는 상황이 발생합니다.
(SET LINESIZE ???;) 구문으로 어느정도 해소할 수는 있지만 칼럼이 정말 많으면
이것도 해결책이 될 수 없습니다.

이를 효과적으로 해결해주는 iSQL구문이 있어 소개합니다.
제 뒤에 뒤에 계신 손연구원님께서 버그로 추가하신 기능이지만 그 편리함은 매우 큽니다.
몇달 전에 이 기능을 처음 알고, 너무 편리하고 좋다고 설레발을 쳤는데,
막상 손연구원님은 시크하게 반응하셨지만, 다시 생각해도 이 기능을 참으로 유용합니다.

제가 알기로 O사에서는 이러한 출력을 위해 사용자 정의 procedure등을 정의하는데,
막상 사용해보면 그리 편리하지 않습니다. ( http://asktom.oracle.com/tkyte/print_table/ 참고 )

반면 알티베이스 iSQL의 방식은 훨씬 간단하고 편리합니다.
참고로 이 기능은 5.3.1 릴리즈에 포함되어 있는 기능입니다.

간단한 예제를 보여드리겠습니다.
아래와 같이 V$DATATYPE에 INTEGER의 정보를 조회합니다.
예상하시겠지만 마구 줄바꿈이 일어나서 볼 수 없는 지경입니다.

  1. iSQL> SET VERTICAL OFF;  
  2. iSQL> SELECT *  
  3.     2   FROM V$DATATYPE  
  4.     3  WHERE TYPE_NAME = 'INTEGER';  
  5. TYPE_NAME                                 DATA_TYPE   ODBC_DATA_TYPE  
  6. -------------------------------------------------------------------------  
  7. COLUMN_SIZE LITERAL_PREFIX  LITERAL_SUFFIX  CREATE_PARAM  
  8. -----------------------------------------------------------------------  
  9. NULLABLE    CASE_SENSITIVE SEARCHABLE  UNSIGNED_ATTRIBUTE FIXED_PREC_SCALE  
  10. ---------------------------------------------------------------------------------  
  11. AUTO_UNIQUE_VALUE LOCAL_TYPE_NAME                           MINIMUM_SCALE  
  12. ------------------------------------------------------------------------------  
  13. MAXIMUM_SCALE SQL_DATA_TYPE SQL_DATETIME_SUB NUM_PREC_RADIX INTERVAL_PRECISION  
  14. -------------------------------------------------------------------------------------  
  15. INTEGER                                   4           4  
  16. 10  
  17. 1           0           2           0           0  
  18.             INTEGER  
  19.             4                       10  
  20. 1 row selected.  

정말 난감하죠?
하지만 아래와 같이 SET VERTICAL ON;을 구문을 활용하면 훨씬 편하게 볼 수 있습니다.

  1. iSQL> SET VERTICAL ON;  
  2. iSQL> SELECT *  
  3.     2   FROM V$DATATYPE  
  4.     3  WHERE TYPE_NAME = 'INTEGER';  
  5. TYPE_NAME          : INTEGER  
  6. DATA_TYPE          : 4  
  7. ODBC_DATA_TYPE     : 4  
  8. COLUMN_SIZE        : 10  
  9. LITERAL_PREFIX     :  
  10. LITERAL_SUFFIX     :  
  11. CREATE_PARAM       :  
  12. NULLABLE           : 1  
  13. CASE_SENSITIVE     : 0  
  14. SEARCHABLE         : 2  
  15. UNSIGNED_ATTRIBUTE : 0  
  16. FIXED_PREC_SCALE   : 0  
  17. AUTO_UNIQUE_VALUE  :  
  18. LOCAL_TYPE_NAME    : INTEGER  
  19. MINIMUM_SCALE      :  
  20. MAXIMUM_SCALE      :  
  21. SQL_DATA_TYPE      : 4  
  22. SQL_DATETIME_SUB   :  
  23. NUM_PREC_RADIX     : 10  
  24. INTERVAL_PRECISION :               
  25.   
  26. 1 row selected.  

자 어떤가요? ^^;
이 기능을 모르고 계셨다면, 앞으로 유용하게 사용하시기 바랍니다.