본문 바로가기

Query10

[오라클] Oracle에서 컬럼의 값 만큼 행(Row)을 늘리는 쿼리 1234567SELECT ASNDKY, WAREKY, YQTYASN_IFROM ASNDHWHERE 1=1AND DOCDAT = '20170531';cs 이 쿼리를 실행하면 결과가 이렇게 나온다. YQTYASN_I라는 컬럼의 값의 수만큼 row를 뿌려줘야 하는 경우가 생겼는데 어떻게 해야 할까?오라클에서는 CONNECT BY를 사용하면 해결할 수 있다. 12345678910SELECT H.ASNDKY, H.WAREKY, H.YQTYASN_IFROM ASNDH H, (SELECT LEVEL NUM FROM DUAL CONNECT BY LEVEL 2017. 6. 29.
[오라클] 테이블정의서 자동으로 만들어주는 Oracle 쿼리 (Primary Key 여부 포함) 123456789101112131415161718192021222324252627282930313233343536373839404142WITH LIST AS( SELECT A.TABLE_NAME, A.COLUMN_NAME, A.DATA_TYPE, A.DATA_LENGTH, A.NULLABLE, B.COMMENTS FROM dba_tab_columns A, all_col_comments B WHERE A.OWNER = B.OWNER AND A.TABLE_NAME = B.TABLE_NAME AND A.COLUMN_NAME = B.COLUMN_NAME AND A.OWNER = 'LOTOSDEV' -- DB명),PKLIST AS( SELECT C.TABLE_NAME, C.COLUMN_NAME, C.POSITIO.. 2017. 6. 26.
[오라클] Oracle에서 모든 테이블 목록 가져오는 쿼리 현재 진행하는 프로젝트는 솔루션을 가지고 작업을 하는데요.테이블이 엄청나게 많더라구요. 테이블 수를 보고 깜짝 놀랐는데...도대체 테이블 수가 몇 개나 되는지 궁금한데 어떻게 알 수 있을까요? select object_name from user_objects where object_type = 'TABLE'; -- 테이블 목록 select object_name from user_objects where object_type = ‘SEQUENCE’; -- 시퀀스 목록 이 쿼리를 사용하면 테이블 목록을 가져올 수 있답니다. 테이블 개수가 224개나 된다니... 정말 엄청나네요~ ㄷㄷㄷ 2017. 5. 22.
[Wordpress] 워드프레스 디버깅 에러 로그 및 실행 쿼리 확인할 수 있는 방법 및 플러그인(plugin) 제 경험상 디버깅을 잘하는 분들이 코딩도 잘 합니다.자바 프로그래머인 제가 php로 만들어진 워드프레스를 하려니 사실 좀 힘든 점이 많은데요.다행히도 워드프레스는 디버깅을 도와주는 또는 에러를 확인하게 해주는 방법을 여러가지로 지원해 주고 있어서 다행입니다. /wp-includes/wp-configs.php 파일에 아래와 같이 2줄을 넣어주면 에러 발생시 debug.log 파일에 에러를 저장해 줍니다.define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); 에러 발생시 /wp-content/debug.log 파일을 확인하면 됩니다. 로컬이 아닌 원격으로 서버를 두고 있다면 debug.log를 바로바로 확인하기 힘들텐데요.이럴 땐, debug.log에 있는.. 2017. 1. 8.
[쿼리문/오라클] 토드(Toad)에서 바로 실행가능한 변수선언 쿼리문 변수를 선언해서 쿼리를 실행해야 할 경우가 있는데요. 반복적인 작업을 완료하고 select를 한다던지... 여러가지 경우가 있을 텐데요. DECLARE 변수선언 BEGIN 실행구문 END; 이런식으로 DECLARE BEGIN ~ END 구문으로 프로그래밍을 하여 결과를 확인할 수 있습니다. 아래 샘플을 참고하시면 됩니다. DECLARE V_NUM INTEGER := 0; V_TARGET_DATE DATE; BEGIN LOOP V_TARGET_DATE := SYSDATE - V_NUM; DELETE FROM USE_STATUS_DAY WHERE CREATE_DATE >= TO_DATE(TO_CHAR(SYSDATE - V_NUM, 'YYYYMMDD')) AND CREATE_DATE < TO_DATE(TO_C.. 2016. 2. 5.
[쿼리문/오라클] 간단한 쿼리로 일련번호 쉽게 넣기 - ROWNUM 사용 보통 PK로 일련번호를 많이 넣는데요.PK가 없는 테이블에 ROWNUM을 사용하면 간단하게 일련번호를 넣을 수 있습니다. JOBS 라는 테이블에 PK가 없는데요.다음 쿼리로 PK로 사용할 SEQ_NO라는 컬럼을 만들어 보겠습니다.ALTER TABLE JOBS ADD SEQ_NO NUMBER(12); 다음 쿼리로 SEQ_NO 컬럼에 일련번호를 넣습니다.UPDATE JOBS SET SEQ_NO = ROWNUM; 결과를 볼까요? 일련번호 넣는데 커서 만들고 복잡하게 할 필요 없습니다^^순서가 아주 중요한 게 아니라면요. 2015. 9. 16.
[쿼리문/오라클] WHERE절에서 Null 값 비교하기 Null 값은 다른 값과 비교하는 방법이 다른데요. NULL의 비교법같은지 비교 : WHRE COMM IS NULL다른지 비교 : WHERE COMM IS NOT NULL NULL 이외의 비교법같은지 비교 : WHERE COMM = '300'다른지 비교 : WHERE COMM '300' Nul의 잘못된 비교 WHERE COMM NULL 아래처럼 NULL인 데이타가 있는데도 결과값이 나오지 않습니다. NVL() 함수를 이용한 비교NVL() 함수는 NULL일 경우, 다른값으로 치환해주는 함수인데 이걸 이용해서 비교할 수 있습니다.WHERE NVL(COMM, -1) = -1 2015. 8. 7.
[전자정부 표준프레임워크] 새로 만든 모듈의 iBatis 쿼리를 새로운 xml 파일에 만들고 싶다면 이렇게 하자. 자, 다음은 전자정부 표준프레임워크(엄밀히 말하면 Spring)에서 새로운 모듈을 만들고 쿼리를 만들어서 저장하고 싶을 때 다음과 같이 하면 됩니다. 먼저, 새로운 폴더 아래에 새로운 iBatis용 xml을 만듭니다. 저는 CodSelectHand_SQL_Oracle.xml 이라고 만들어 봤습니다. (파일명의 뒷부분(_SQL_Oracle.xml)은 규칙이므로 동일하게 하셔야 합니다.) 그리고, 파일 안에 원하는 쿼리도 넣어줍니다. 자, 여기까지만 작업하면 아래와 같은 에러가 발생합니다.There is no statement named *** in this SqlMap한마디로 해당 쿼리를 못 찾겠다는 뜻인데요. 아래와 같이 sql-map-config-oracle-cod-ems.xml 파일을 또 만들어 줍니.. 2015. 6. 12.
[전자정부 표준프레임워크] eclipse 콘솔(로그)에 디버그(Debug) 모드에서 실행된 쿼리문을 보여주자. - 전자정부프레임워크 오라클 이클립스 디버그 모드에서는 실행된 쿼리문을 보는 게 좋습니다. 쿼리에서 오류가 떴을 때 쿼리를 Toad 같은 오라클 툴에서 실행해 보면서 쿼리를 수정할 수 있어서 좋구요. 물론, log4j에서 설정을 해야겠지만 JDBC가 먼저 지원을 해주어야만 합니다. 제가 지금 하고 있는 전자정부 표준프레임워크에서는 기본적으로 쿼리가 콘솔에 보이지 않도록 돼 있네요. context-datasource.xml 아래처럼 바꿔주야 합니다. Globals.DriverClassName=net.sf.log4jdbc.DriverSpy 2015. 5. 27.
[쿼리문] Merge into를 이용해서 insert나 update를 자동으로 실행하자. MERGE INTO 쿼리를 이용하면 Update나 Insert를 하기 위해 해당 데이타가 존재하는지 확인하기 위해 따로 Select를 하지 않아도 됩니다. 데이타가 존재하는지 알아서 판단해서 Update이나 Insert를 실행하기 때문이죠. 저도 그 편리함 때문에 종종 MERGE INTO를 사용합니다.MERGE INTO 테이블명 USING DUAL ON ( 조인조건 ) WHEN MATCHED THEN UPDATE 문 WHEN NOT MATCHED THEN INSERT 문 쿼리는 위와 같이 구성이 됩니다. 조인조건에 해당하는 데이타가 있는지 확인해서 Update 또는 Insert를 실행하게 됩니다. 아래 예제를 보면 어떻게 사용하는지 명확하게 알 수 있습니다. MERGE INTO TB_USER USING .. 2015. 2. 4.