PL/SQL(Procedure, Package)을 사용하다 보면 동적으로 쿼리(Query)를 생성하거나 텍스트(text) 쿼리를 입력 받아서 실행해야하는 경우가 있다. 다음 두가지 방법을 적절히 사용하면 좋은 결과를 얻을수 있다. EXECUTE IMMEDIATE : Inset, Update, Delete 구문을 실행하거나 Select 구문을 실행 시 INTO를 사용하여 단일 값을 리턴 받을 때 사용 OPEN-FOR : Select 구문을 실행 시 Cursor를 리턴 받을 때 사용 주의 : 바인드 변수(:) 사용 시 쿼리 내부에서 변수명은 의미가 없고 변수 순서, 개수가 USING의 변수 순서, 개수와 일치해야 한다. 바인드 변수가 없다면 USING는 생략가능. 1. EXECUTE IMMEDIATE (IN..
오라클(Oracle)에서 사용하는 ROWNUM을 postgreSQL에서 사용하는 방법 □ WHERE 절 에서 사용 SELECT ID FROM ARTIFACT LIMIT 5 - 조회된 자료에서 5건의 데이터만 보여 준다. □ SELECT 절 에서 사용 SELECT (ROW_NUMBER() OVER()) AS ROWNUM , ID FROM ARTIFACT LIMIT 5
오라클 11g 이상이면 REGEXP(정규식) 함수를 이용하여 손쉽게 가능하나 그 이하 버전에서는 INSTR 함수를 이용하여 비슷한 효과를 얻을 수 있다. □ 방법 1. (REGEXP 이용) - Oracle 11g --가상 테이블 WITH TEST_TABLE AS ( SELECT '고구려' COUNTRY, '1대' ST, '동명성왕' KING_NM FROM DUAL UNION ALL SELECT '고구려' COUNTRY, '3대' ST, '대무신왕' KING_NM FROM DUAL UNION ALL SELECT '백제' COUNTRY, '1대' ST, '온조왕' KING_NM FROM DUAL UNION ALL SELECT '고구려' COUNTRY, '2대' ST, '유리왕' KING_NM FROM DUA..
WM_CONCAT 함수를 이용하여 손쉽게 여러행의 데이터를 한 컬럼으로 합칠 수 있다.□ 방법 1. (WM_CONCAT 이용) --가상 테이블 WITH TEST_TABLE AS ( SELECT '고구려' COUNTRY, '1대' ST, '동명성왕' KING_NM FROM DUAL UNION ALL SELECT '고구려' COUNTRY, '3대' ST, '대무신왕' KING_NM FROM DUAL UNION ALL SELECT '백제' COUNTRY, '1대' ST, '온조왕' KING_NM FROM DUAL UNION ALL SELECT '고구려' COUNTRY, '2대' ST, '유리왕' KING_NM FROM DUAL UNION ALL SELECT '백제' COUNTRY, '3대' ST, '기루왕' ..
오늘이 속한 주의 월요일부터 일요일까지 일자가 필요할때가 있다 select to_char(a.s_date, 'yyyy-mm-dd') monday , to_char(a.s_date+1, 'yyyy-mm-dd') tuesday , to_char(a.s_date+2, 'yyyy-mm-dd') wednesday , to_char(a.s_date+3, 'yyyy-mm-dd') thursday , to_char(a.s_date+4, 'yyyy-mm-dd') friday , to_char(a.s_date+5, 'yyyy-mm-dd') saturday , to_char(a.s_date+6, 'yyyy-mm-dd') sunday from ( select sysdate - (to_number(to_char(sysdate,..