본문 바로가기

분류 전체보기

[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 ; 더보기
[SQL] 테이블 삭제시 제약 조건제거 테이블을 삭제 할때 기본적으로 DROP TABLE 테이블명이와 같이 하면 되지만, 종속된 제약 조건이 있을 경우, 삭제가 안될 수 있다.그래서 넣어주는 옵션이. CASCADE CONSTRAINTS이다. DROP TABLE 테이블명 [CASCADE CONSTRAINTS] ;이과 같이 하면, 종속된 제약 조건이 삭제된다. 더보기
[Oracle Database] NVL함수 사용 중 유의점 오라클에 대상의 값이 존재하지 않을 경우 다른 값으로 치환해 주는 함수가 있다. NVL 함수인데...얼마전 우연히 이 함수를 사용하면서 난관에 봉착한 적이 있었다. select NVL(대상컬럼, 0) into 받을 변수 from 테이블 where 조건 = 전달 받은 조건; 이 구문을 사용하면서 기대했던 값은. 대상 컬럼의 값이 존재하지 않는다면 변수에 값이 0이 들어가길 희망했다. 하지만 변수에 값이 세팅되지 않고 예외상황이 발생했고, 한참을 끙끙거렸더랬다. 이유는 간단했다. 이미 이 글을 보는 누군가는 저 구문에서 한가지가 빠져 있다는 것을 눈치챈 분들도 있을 것이다. 위의 구문을 실행했들때, 조건에 맞는게 없다면 NVL에서 대상을 변경 시키지 못한다.해서 NVL(MAX(컬럼명)), 0) 혹은 NVL(.. 더보기
[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 형식으로 변환되어 정렬이 된다. 더보기
[SQL] select쿼리 사용시 유용한 like구문 사용법 select 필드1 from 테이블 where 필드2 like '단어%' 라고 실행을 하면 앞자리에 단어가 포함된 값을 찾아 온다. example1 쿼리 - select 유저이름, 전화번호 from 유저정보테이블 where 유저이름 like '홍%' 결과 홍길동 010-xxx-xxxx 홍아무개 010-xxx-xxxx example2 쿼리 - select 유저이름, 전화번호 from 유저정보테이블 where 유저이름 like '%길%' 결과 홍길동 010-xxx-xxxx 김길동 010-xxx-xxxx 다음과 같은 결과를 얻을 수 있다. 더보기
[Oracle Database] 저장 프로시저(SP) 실행 방법 오라클에서 저장 프로시저를 임의로 실행 시켜 볼 일이개발 중에는 간간히 일어난다. 이때 SP를 실행 시켜 보면 되는데. 방법은 다음과 같다. VARIABLE P_RS REFCURSOR;EXECUTE 프로시저 이름( 인자, :P_RS);PRINT P_RS; 이렇게 하면 SP안에 SELECT가 있다면 결과가 보여질 것이고, 아니면 임의의 변수를 선언해서 구문 중간중간 넣어두고 에러를 캐치하게 해두고 프린트를 찍도록 하였다면 변수에 진행된 곳까지의 변수가 나올 것이다.혹은 에러메시지를 출력하도록 했다면 그것도 나오겠다. 머 이런 방법들은 다음에 잊어 먹기 전에 포스팅 하도록 하자. 끝!!! 더보기