본문 바로가기

Oracle5

DECODE 함수와 CASE 함수 DECODE 함수에서는 '=' 연산만 가능하지만,CASE 함수에서는 산술연산, 관계연산, 논리연산과 같은 다양한 비교가 가능하다. [DECODE 함수 형식]DECODE( {column | expression}, search1, result1, search2, result2, search3, result3, default ) CASE 함수는 일반적으로 사용하는 IF~THEN~ELSE 형태의 구조로 되어 있다. [CASE 함수 형식]CASE {column | expression} WHEN 조건1 THEN 결과1 [WHEN 조건2 THEN 결과2 ...... WHEN 조건n THEN 결과n ELSE 결과4]END SELECT table_name,CASE owner WHEN 'SYS' THEN 'The owne.. 2014. 4. 17.
ORA-02049: 시간초과: 분산 트랜잭션이 잠금으로 대기중 입니다 ORA-02049: 시간초과: 분산 트랜잭션이 잠금으로 대기중 입니다ORA-02049: timeout: distributed transaction waiting for lock 오전에 울 사무실 막내가 프로시저를 실행하다가 이와 같은 오류를 만났다. 테이블에 insert를 하고 나서, commit/rollback 하는걸 깜빡하고해당 테이블에 동일한 record를 insert 하도록 하는 프로시저를 실행한 것이다. 어처구니 없는 실수라고 생각할 수 있지만,사실 개발을 오래한 사람들도 가끔씩 만나게 되는 상황이다. 먼저 lock의 원인을 찾아야 한다. SELECT a.sid, a.serial#, a.username, a.process, b.object_name, DECODE (c.lmode, 2, 'RS',.. 2014. 2. 21.
DBMS_OUTPUT.PUT_LINE procedure를 실행할 경우, 프로그램 흐름이 잘 진행되는지 확인하고 싶은 경우 output 파라미터나 DBMS_OUTPUT.PUT_LINE을 활용할 수 있다. output 파라미터는 일반적으로 해당 값을 최종적으로 할당한 곳의 값만을 알 수 있지만, 호출한 객체에 결과값을 전달해줄 수 있다는 매력이 있다. DBMS_OUTPUT.PUT_LINE은 프로그램 흐름에 있어서, 사이사이에 원하는 곳에 계속 찍어낼 수 있어서 전체적인 흐름을 파악하는데 도움이 많이 된다. 하지만, 호출 객체에 값을 전달해주는 것은 output 파라미터의 몫이다. DBMS_OUTPUT.PUT_LINE(XML_VALUE); 2014. 2. 19.
Invalid Object SELECT * FROM SYS.USER_OBJECTS WHERE STATUS = 'INVALID' AND OBJECT_TYPE IN ('PROCEDURE','FUNCTION','PACKAGE','PACKAGE BODY'); 2014. 2. 17.
FlashbackQuery Oracle 9i 이상에서 제공 데이터베이스에 구조적인 변화를 가하지 않고 과거 일정 시점의 데이터 상태 확인 가능 DBA의 도움 없이, 애플리케이션 개발자가 비교 혹은 복구를 수행 가능 Oracle Automatic Undo Management - UNDO RETENTION 매개변수와 UNDO 테이블스페이스 크기에 의해 일정 시점의 스냅샵 저장 실수로 DELETE/UPDATE한 데이터를 찾고자 할 때, 매우 요긴한 기능이다. [사용예] SELECT * FROM accounts AS OF TIMESTAMP TO_TIMESTAMP('20140216 10:59:58','YYYYMMDD HH24:MI:SS') MINUS SELECT * FROM accounts; 오늘 어떤분이 MS-SQL Server에서 wh.. 2014. 2. 17.