Database(14)
-
[오라클]Oracle Function
oracle function 함수 만들어보자~~~ CREATE OR REPLACE FUNCTION Schemas(연결고리).GET_LIST( function 이름) ( V_NAME IN VARCHAR2 ) RETURN VARCHAR2 IS TEMP_AGE VARCHAR2(10) := '' ; -- 임시변수? BEGIN SELECT AGE INTO TEMP_AGE --이곳에 임시로 처들어감 FROM TABLE WHERE NAME = V_NAME ; IF SQL%NOTFOUND THEN RETURN(' ') ; END IF; RETURN (TEMP_AGE); EXCEPTIONWHEN OTHERS THEN RETURN(' ') ; END GET_LIST( function 이름) ;/ 이런 식으로 응용해서 쓰면..
2014.01.21 -
oracle start with connect by prior
oracle start with connect by prior 절 은 트리형태 구조이다 쇼핑몰 같은 1뎁스 2뎁스 3뎁스 4뎁스 에대한 트리구조를 쿼리로 만들어바라 그얼마나 조인을 해야하고 복잡한일인가또한 게시판에대한 일반글과 댓글에 대한 트리구조를 만들려고 해보자. 예를들면 -Sport-골프-골프공 -골프채 -골프장갑-스노우보드-부츠-데크-장갑이런구조가 있는 쇼핑몰이라고 생각하자 -Sport [ depth = 1 , no= 1 , upno=1]-골프 [ depth = 2 , no= 2 , upno=1]-골프공 [ depth = 3 , no= 3 , upno=2]-골프채 [ depth = 3 , no= 4 , upno=2]-골프장갑 [ depth = 3 , no= 5 , upno=2]-스노우보드 [ de..
2014.01.09 -
Oracle MERGE INTO (Upsert) 구문
oracle merge into 성능 알아보자 . Oracle 9 버전 이상에서 가능합니다. IF 문이라고 생각하면된다.(기존 ex : IF 뭐뭐 = true THEN ELSE END IF;) true 이면 Update set , false 일 경우 Insert into 가 실행이 된다. 이건 머지 하는분들은 ? 밑에껄 보고 MERGE INTO 에 대한 구문을 참고 바란다. ㅋ 그리고 주의할점 WHEN MATCHED THEN 부분에서 UPDATE SET 까지만 써줘야함 테이블명까지쓰면 안됨 INSERT도 INSERT 만 써줘야한다 간혹 INTO 까지 쓰면 안됨 밑에 예제를 참고하세요~ MERGE INTO 테이블이름 USING 대상테이블 // 같은 테이블이면 DUAL 이라 써준다 ON 조건(조인조건) WH..
2013.10.31 -
[Oracle TRIGGER]오라클 트리거
database oracle trigger 란 무엇이냐?Table에 대한 이벤트를 자동으로 실행 해주는것 DML(데이터조작언어) 데이터 상태의 관리를 자동화 하는것이다.쉽게 말하자면 자동으로 실행되는 PL/SQL 문이라고 보면됨..예를들면 A,B,C 라는 테이블에 공통으로 주민번호가 있다 . A라는 주민번호가 지워지면 B,c테이블 자동으로 지워지게하거나 Update , insert 등을 할수있음~ 문장 trigger : insert, delete, update 한번만 실행 됨 컬럼값이 변화가 생길때마다 지가 아라서 실행 (FOR EACH ROW 옵션이 사용안됨) 행 trigger : 컬럼의 데이터행이 변화가오면 실행됨 변경 후의 행은 OLD, NEW 사용하여 가저올수 있음 (FOR EACH ROW 옵션이..
2013.10.10 -
Invalid use of group function
MYSQL 퀴리 작성시 max + 1 라고 사용 하면 Invalid use of group function error 가 발생합니다 오라클에서 이렇게 써주면 Update MEMBERS Set SEQ = MAX(SEQ ) + 1 Where REGI = 1; 실행하면 Invalid use of group function Error 발생 Alias (as) 를 사용하지 않아 발생하는 에러입니다. Set SEQ = MAX(SEQ ) + 1 을 MYSQL 로 변경 해봅시다. Update Members Set SEQ = ( (SELECT MAXFIELD FROM (SELECT MAX(SEQ ) AS MAXFIELD FROM MEMBERS) AS SUB_TABLE) + 1 )
2013.05.31 -
[MySQL]SHOW PROCESSLIST
MYSQL에서 원치않는 TABLE LOCK이 걸렸을 경우 해제 방법입니다. SHOW PROCESSLIST 쿼리를 실행하면 아래와 같은 결과가 출력됩니다. 위의 내용 중 State 컬럼에 Waiting for table metadata lock 이라는 항목이 LOCK 상태입니다. ( 유독 TIME 시간이 높은게 프로세스를 많이 먹고 있다는 증거 이다.) 참고 : http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&m_no=21678&cat1=13&cat2=383&cat3=418&lang=k Info 컬럼에 실행했던 쿼리문을 확인 후 ID 컬럼을 잘 메모합니다. LOCK 상태에 대한 정보 확인이 끝나면 프로세스 아이디를 아래의 쿼리로 실행하여 프로세스를..
2013.03.15