Oracle 6

[Oracle Database] Rownum구문 사용법

일을 하다가 최대 Row가 130인 컬럼에 100개만 반환해달라는 요청을 받았다. 즉, 일반적으로 SELECT를 하면 130개의 ROW가 결과로 반환되는데 그 중에서 100개만 전달해달라는 요청이었는데. 이와 같은 경우에 사용할 수 있는 유용한 명령어(?), 함수(?)가오라클에 있다. 다른 SQL에도 있을꺼 같은데. 일단 귀찮으니 패스. 나중에 꼭 찾아보자. ROWNUM 1. 오라클 에서만 사용가능.2. 조회된 Row의 number를 가지는 가상의 컬럼3. 주로 paging처리, N-Top 조회시 사용. 위의 요청의 경우는 SELECT * FROM 테이블 WHERE ROWNUM

DataBase/Oracle 2013.02.13

[Oracle Database] 임시테이블 사용

오라클에서 MS_SQL에서 처럼 임시 테이블 사용하는 법. 1. 임시 테이블생성 SQL> create global temporary table temp_tab (col1 number, col2 char(15)) on commit delete rows ; 2. 임시 테이블에 인덱스 만들기 SQL> create index temp_tab_n1 on temp_tab(col1); 3. 임시 테이블에 데이터 인서트 SQL> insert into temp_tab values ( 1 , 'ABC') ; ★ 주의 : Insert/Update 했다고 Commit 하시면 안됩니다. 4. 임시 테이블에서 데이터 가져오기 SQL> select * from temp_tab ;

DataBase/Oracle 2013.02.13

[Oracle Database] NVL함수 사용 중 유의점

오라클에 대상의 값이 존재하지 않을 경우 다른 값으로 치환해 주는 함수가 있다. NVL 함수인데...얼마전 우연히 이 함수를 사용하면서 난관에 봉착한 적이 있었다. select NVL(대상컬럼, 0) into 받을 변수 from 테이블 where 조건 = 전달 받은 조건; 이 구문을 사용하면서 기대했던 값은. 대상 컬럼의 값이 존재하지 않는다면 변수에 값이 0이 들어가길 희망했다. 하지만 변수에 값이 세팅되지 않고 예외상황이 발생했고, 한참을 끙끙거렸더랬다. 이유는 간단했다. 이미 이 글을 보는 누군가는 저 구문에서 한가지가 빠져 있다는 것을 눈치챈 분들도 있을 것이다. 위의 구문을 실행했들때, 조건에 맞는게 없다면 NVL에서 대상을 변경 시키지 못한다.해서 NVL(MAX(컬럼명)), 0) 혹은 NVL(..

DataBase/Oracle 2013.02.13

[Oracle Database] 정렬시 변환 방법. (Order by Cast)

order by를 사용할 때 기본적으로. select * from 테이블 명 where 조건절 order by 컬럼명;이와 같은 방식으로 쿼리를 주로 사용하게 된다. 이렇게 사용하게 되면 컬럼의 값으로 줄을 선 결과를 얻게 되는데. 때때로 이 해당 컬럼명의 값이 숫자임에도 불구하고 문자열로 들어가 있는경우가 있다. 즉 1 이 아니라 "1"이 들어가 있다는 것인데. 이 경우는 문자열을 숫자로 변환해서 불러오면 된다. select * from 테이블 명 where 조건절 order by cast(컬럼명 as 변환 형식) 이렇게 해줄 수 있다.예를 들면. select * from 테이블 명 where 조건절 order by cast(컬럼명 as number) 라고 하면 number 형식으로 변환되어 정렬이 된다.

DataBase/Oracle 2013.02.13

[Oracle Database] 저장 프로시저(SP) 실행 방법

오라클에서 저장 프로시저를 임의로 실행 시켜 볼 일이개발 중에는 간간히 일어난다. 이때 SP를 실행 시켜 보면 되는데. 방법은 다음과 같다. VARIABLE P_RS REFCURSOR;EXECUTE 프로시저 이름( 인자, :P_RS);PRINT P_RS; 이렇게 하면 SP안에 SELECT가 있다면 결과가 보여질 것이고, 아니면 임의의 변수를 선언해서 구문 중간중간 넣어두고 에러를 캐치하게 해두고 프린트를 찍도록 하였다면 변수에 진행된 곳까지의 변수가 나올 것이다.혹은 에러메시지를 출력하도록 했다면 그것도 나오겠다. 머 이런 방법들은 다음에 잊어 먹기 전에 포스팅 하도록 하자. 끝!!!

DataBase/Oracle 2013.02.13