Posted
Filed under ORACLE
select * from table name order by dbms_random.value
2010/07/27 19:46 2010/07/27 19:46
Posted
Filed under ORACLE

1. 문자 함수
 1-1) CHR
 1-2) CONCAT 함수
 1-3) INITCAP 함수
 1-4) LOWER 함수
 1-5) LPAD 함수
 1-6) LTRIM 함수
 1-7) NLS_INITCAP 함수
 1-8) NLS_LOWER 함수
 1-9) NLSSORT 함수
 1-10) NLS_UPPER 함수
 1-11) REPLACE 함수
 1-12) RPAD 함수
 1-13) RTRIM 함수
 1-14) SOUNDEX 함수
 1-15) SUBSTR 함수
 1-16) TRANSLATE 함수
 1-17) TREAT 함수
 1-18) TRIM 함수
 1-19) UPPER 함수
 1-20) ASCII 함수
 1-21) INSTR 함수
 1-22) LENGTH 함수


2. 날짜 처리함수(datetime function)
 2-1) ADD_MONTHS 함수
 2-2) CURRENT_DATE 함수
 2-3) URRENT_TIMESTAMP 함수
 2-4) DBTIMEZONE 함수
 2-5) EXTRACT(datetime) 함수
 2-6) FROM_TZ 함수
 2-7) LAST_DAY 함수
 2-8) LOCALTIMESTAMP 함수 
 2-9) MONTHS_BETWEEN 함수
 2-10) NEW_TIME 함수
 2-11) NEXT_DAY 함수
 2-12) NUMTODSINTERVAL 함수
 2-13) NUMTOYMINTERVAL 함수
 2-14) ROUND(date) 함수
 2-15) SESSIONTIMEZONE 함수
 2-16) SYS_EXTRACT_UTC 함수
 2-17) SYSDATE 함수
 2-18) SYSTIMESTAMP 함수
 2-19) TO_DSINTERVAL 함수
 2-20) TO_TIMESTAMP 함수
 2-21) TO_TIMESTAMP_TZ 함수
 2-22) TO_YMINTERVAL 함수
 2-23) TRUNC(date) 함수
 2-24) TZ_OFFSET 함수


3.데이터 형 변환 함수(conversion function)
 3-1) ASCIISTR 함수
 3-2) BIN_TO_NUM 함수
 3-3) CAST 함수
 3-4) CHARTOROWID 함수
 3-5) COMPOSE 함수 
 3-6) CONVERT 함수
 3-7) HEXTORAW 함수
 3-8) NUMTODSINTERVAL 함수
 3-9) NUMTOYMINTERVAL 함수
 3-10) RAWTOHEX 함수
 3-11) RAWTONHEX 함수
 3-12) ROWIDTOCHAR 함수
 3-13) ROWIDTONCHAR 함수
 3-14) TO_CHAR(character) 함수
 3-15) TO_CLOB 함수
 3-16) TO_DSINTERVAL 함수
 3-17) TO_LOB 함수
 3-18) TO_MULTI_BYTE 함수
 3-19) TO_NCHAR(character) 함수
 3-20) TO_NCHAR(datetime) 함수
 3-21) TO_NCHAR(number) 함수
 3-22) TO_NCLOB 함수
 3-23) TO_NUMBER 함수
 3-24) TO_SINGLE_BYTE 함수
 3-25) TO_YMINTERVAL 함수
 3-26) TRANSLATE ... USING 함수
 3-27) UNISTR 함수


4. 기타함수(miscellaneous single row function)
 4-1) BFILENAME 함수
 4-2) COALESCE 함수
 4-3) DECODE 함수
 4-4) DEPTH 함수
 4-5) DUMP 함수
 4-6) EMPTY_BLOB 함수
 4-7) EMPTY_CLOB 함수
 4-8) EXISTSNODE 함수
 4-9) EXTRACT(XML) 함수
 4-10) EXTRACTVALUE 함수
 4-11) GREATEST 함수
 4-12) LEAST 함수
 4-13) NLS_CHARSET_DECL_LEN 함수
 4-14) NLS_CHARSET_ID 함수
 4-15) NLS_CHARSET_NAME 함수
 4-16) NULLIF 함수
 4-17) NVL2 함수
 4-18) PATH 함수
 4-19) SYS_CONNECT_BY_PATH 함수
 4-20) SYS_CONTEXT 함수
 4-21) SYS_DBURIGEN 함수
 4-22) SYS_EXTRACT_UTC 함수
 4-23) SYS_GUID 함수
 4-24) SYS_XMLAGG 함수
 4-25) SYS_XMLGEN 함수
 4-26) UID 함수
 4-27) USER 함수
 4-28) USERENV 함수
 4-29) VSIZE 함수
 4-30) XMLAGG 함수
 4-31) XMLCOLATTVAL 함수
 4-32) XMLCONCAT 함수
 4-33) XMLFOREST 함수
 4-34) XMLELEMENT 함수


5.그룹함수  Aggregate 함수
 5-1) AVG* 함수
 5-2) CORR* CORR* 함수
 5-3) COUNT* 함수
 5-4) COVAR_POP 함수
 5-5) COVAR_SAMP 함수
 5-6) CUME_DIST 함수
 5-7) DENSE_RANK 함수
 5-8) FIRST 함수
 5-9) GROUP_ID 함수
 5-10) Grouping 함수
 5-11) GROUPING_ID 함수
 5-12) LAST 함수
 5-13) MAX 함수
 5-14) MIN 함수
 5-15) PERCENTILE_CONT 함수
 5-16) PERCENTILE_DISC 함수
 5-17) PERCENT_RANK 함수
 5-18) RANK 함수
 5-19) REGR_(linear regression) function* 함수
 5-20) STDDEV 함수
 5-21) STDDEV_POP 함수
 5-22) STDDEV_SAMP 함수
 5-23) SUM 함수
 5-24) VAR_POP 함수
 5-25) VAR_SAMP 함수
 5-26) VARIANCE 함수
 5-27) Grouping sets 함수


6. Analytic 함수
 6-1) AVG* 함수
 6-2) CORR* CORR* 함수
 6-3) COUNT* 함수
 6-4) COVAR_SAMP 함수
 6-5) CUME_DIST 함수
 6-6) DENSE_RANK 함수
 6-7) FIRST 함수
 6-8) FIRST_VALUE 함수
 6-9) LAG 함수
 6-10) LAST_VALUE 함수
 6-11) LEAD 함수
 6-12) NTILE 함수
 6-13) RATIO_TO_REPORT 함수
 6-14) ROW_NUMBER 함수


7. 객체 참조 함수
 7-1) REF 타입


8. PseudoColumn을 의미하는 것
 8-1) ROWID 컬럼
 8-2) ROWNUM 컬럼

2010/06/29 17:41 2010/06/29 17:41
Posted
Filed under ORACLE
 [원문] http://develop.sunshiny.co.kr/122

※ Oracle 오라클 DECODE 함수

- 특정 컬럼의 값을 기준으로 마치 IF문을 사용하는 것과 같은 효과를 내는 함수
- 해당 컬럼의 값이 'A'이면 지정한 특정한 값을 출력하고, 'B'이면 또 다른 값을 출력
- 기본값을 정해서 조건을 만족하지 않는 경우의 출력 제어 가능

- 구문
DECODE(expr, search, result, default)
-- expr과 각 search 값을 비교하녀 같으면 result 값을 반환, 다르면 default 값을 반환

# 사원 번호(DEPTNO)에 따른 인상 급여

SELECT ENAME, DEPTNO, SAL,
    DECODE(DEPTNO
    ,10, SAL*1.05
    ,20, SAL*1.1
    ,30, SAL*1.15
    ,SAL)AS "인상급여"
FROM EMP;

ENAME, DEPTNO, SAL, 인상급여
----------------------------
SMITH   20    800   880
ALLEN   30    1600   1840
WARD    30    1250    1437.5
JONES   20    2975   3272.5
MARTIN  30    1250  1437.5
BLAKE   30    2850   3277.5
CLARK   10    2450   2572.5
SCOTT   20    3000   3300
KING    10    5000    5250
TURNER  30    1500  1725
ADAMS   20    1100   1210
JAMES   30    950     1092.5
FORD    20    3000    3300
MILLER  10    1300  1365



# 직업 이름(JOB)에 따라 새로운 직업명을 변형

SELECT ENAME, JOB,
        DECODE(JOB
    ,'ANALYST', '분석가'
    ,'CLERK', '점원'
    ,'MANAGER','관리자'
    ,'SALESMAN', '영업사원'
    ,'PRESIDENT', '사장님')AS NEW_JOB
FROM EMP;

ENAME,     JOB,      NEW_JOB
-----------------------------
SMITH   CLERK         점원
ALLEN   SALESMAN      영업사원
WARD    SALESMAN      영업사원
JONES   MANAGER       관리자
MARTIN  SALESMAN      영업사원
BLAKE   MANAGER       관리자
CLARK   MANAGER       관리자
SCOTT   ANALYST       분석가
KING    PRESIDENT     사장님
TURNER  SALESMAN      영업사원
ADAMS   CLERK         점원
JAMES   CLERK         점원
FORD    ANALYST       분석가
MILLER  CLERK         점원


참고 사이트 : http://stillrabbit.blogspot.com/2008/02/oracle-decode-tip.html

decode 문은 일반적으로 값을 치환하는데 쓰입니다.

* 컬럼 1개를 여러개의 값으로 비교할경우..
col1 의 값이 1,2,3 인경우 각각 'ONE', 'TWO', 'THREE' 로 변환하고자 한다면,

decode(col1, 1, 'ONE', 2, 'TWO', 3, 'THREE', 'MANY')

1,2,3 이 아닌경우는 'MANY' 가 되겠죠...

* 컬럼 여러개를 한개의 값으로 비교할경우

decode(2, col1, 'col1 is TWO', col2, 'col2 is TWO', null)

* 단방향 범위를 비교하는경우
만약 25 보다 큰경우엔 25 만 리턴하고 작은경우엔 해당컬럼의 값을
리턴하고자 한다면,

decode(sign(col1-25), -1, col1, 25)

처럼 사용하면 되겠죠.

* 다차원 통계에 응용(group by 와 조합)
그룹 아이디별로 합산하는 쿼리는 일반적으로 아래와같습니다.


select grp_id, sum(score)
from GRP_SCORE_TB
group by grp_id

만약..그룹별로 총계를 내고, 그룹별 총계 합산한 총합산을 내고싶다면?
다음과같이 카티션 곱을 응용하고, decode로 선택적인 그룹핑을 해주시면
됩니다.


select MAX(decode(gubun, 1, grp_id, '총계')),
sum(score)
from GRP_SCORE_TB
cross join (select level as gubun from dual connect by level < 3)
group by gubun, decode(gubun, 1, grp_id, null)

이려면,


a001 200
a004 122
a003 27
총계 347

과 같은 결과를 낼수 있습니다.

※ 몇가지 예로 decode 의 활용을 알아보았습니다. 이외에도 order by 등에도
사용하면, 위의 group by 에 사용한것처럼, 선택적인 sorting 이 이루어지게
이용될수도 있습니다.

2010/06/29 17:33 2010/06/29 17:33
Posted
Filed under ORACLE
[원문] : http://javaora.tistory.com/114
setTimeout 함수는 일반적으로 지정된 시간이후 주어진 함수를 실행한는 타이머와 같은 역할을 한다. 인터넷상에서 검색해 보면 수많은 사용방법이 나온다. 일반적인 사용방법은 아래와 같다.

function test(){
    alert("테스트입니다.");
}

setTimeout("test", 1000);

 그럼 1초후 "테스트입니다." 라는 alert 창이 뜰것이다. 그럼 함수에 인자(Parameter)를 넘길때는 어떻게 하는가?

 아래와 같이 사용하면 된다.

function test(msg){
    alert(msg);
}

setTimeout("test('테스트입니다.')", 1000);

var vMsg = "또 다른 테스트입니다.";
setTimeout("test('+ vMsg +')", 3000);

 그럼 정확히 1초후 "테스트입니다." 라는 alert 창과 함께 "또 다른 테스트입니다." 라는 alert 창이 3초후에 뜰것이다. 여기까지는 setTimeout 의 사용법으로 많이 포스팅 되고 있다. 그렇다면 Object 형 인자를 넘기려면 어떻게 해야 할까?

 의외로 간단하다.

function test(obj){
    alert(obj.value);
}
function fnClick(obj){
    setTimeout(function(){
                          test(obj);
                     }, 1000);
}
<input type="button" value="Hello" onclick="fnClick(this);">

 조금 억지스러워 보일 예제이다. 좋은 예제가 생각안나 그냥 설명하겠다. 소스만 보시고도 감 잡으셨겠지만 Hello 란 버튼을 누르면 1초후 버튼의 값인 "Hello"를 alert 창으로 띄워준다.

 두번째 예제를 보고 Object 형 변수를 어떻게 넘길지 고민하시는 분들께 도움이 되었으면 한다.
2010/05/28 23:53 2010/05/28 23:53
Posted
Filed under ORACLE
[원문]http://tylee82.tistory.com/71


1. 덤프 뜨기(Export)
-기본
명령어프롬프트 > exp 아이디/비번@서비스명(SID)

-옵션(파일명 지정 또는 테이블 지정)
명령어프롬프트 > exp 아이디/비번@서비스명(SID)  tables=테이블명1,테이블명2...
file=파일명.dmp

2. 덤프파일 임포트 하기
-기본
명령어프롬프트 > imp 아이디/비번 file=파일명.dmp

-옵션 테이블지정
명령어프롬프트 > imp 아이디/비번 file=파일명.dmp tables=테이블명1,테이블명2...

덤프 넣을때 - import
D:\tmp>imp 아이디/비번
(일부 테이블만)
D:\tmp>imp 아이디/비번 file=파일명
tables=테이블명

/예)

exp test/testpw OWNER=test FILE=test.dmp LOG=test.log

exp test/testpw@test FILE=test.dmp LOG=test.log

imp test/testpw FROMUSER=test TOUSER=test FILE=test.dmp LOG = test.log

2010/05/27 14:02 2010/05/27 14:02
Posted
Filed under ORACLE
oracle 계정으로 접속해서 오라클이 설치된 bin 디렉토리로 이동후~ exp 명령을 사용합니다.

- 전체 데이터베이트 export 방법
[oracle@localhost ~]$ ./exp userid=system/manager file='/home/oracle/full.dmp' full=y

- user별 export 방법
[oracle@localhost ~]$ ./exp userid=scott/tiger file='/home/oracle/scott.dmp'
2010/05/27 13:59 2010/05/27 13:59
Posted
Filed under ORACLE

SELECT SYS_CONTEXT ('USERENV', 'IP_ADDRESS')

   FROM DUAL;

2010/03/09 14:09 2010/03/09 14:09
Posted
Filed under ORACLE

[원문] : http://jen.fluxcapacitor.net/geek/autoincr.html

1. 1씩 증가 시키기 위해서 test_seq라는 트리거를 생성한다.
create sequence test_seq
start with 1
increment by 1
nomaxvalue;


2. 테이블 생성
create table test (id number, testdata varchar2(255));


3. test 테이블에 있는 id에 insert가 되는 시점에 1씩 증가 시키기 위한 트리거 생성
    트리거를 하나 더 생성 하여 1에서 만든 test_seq 값을  test테이블에 id에 할당 한다.

 create trigger test_trigger
 before insert on test
 for each row
 begin
 select test_seq.nextval into :new.id from dual;
 end;

4. 트리거를 사용 하지 않을 경우
insert into test values(test_seq.nextval, 'voila!')
test.sql.nextval를 통하여 등록 한다.

2010/01/29 13:12 2010/01/29 13:12
Posted
Filed under ORACLE
[원문:] http://iret-ceo.blogspot.com/2009/01/oracle-limit-offset.html

OracleではLimit Offsetがないため処理的に困ることが多い
じゃあどうするかというと
betweenとrow_number() over()を使うとうまくいける

テーブル例
TEST
 SORT NUMBER(1),
TEST_NAME VARCHAR2(256)

例として先頭の10個取ってくるサンプル
select
*
from(
select
row_number() over(ORDER BY SORT) AS NUM,
TEST_NAME
FROM
TEST
ORDER BY SORT
)
WHERE
NUM BETWEEN 0 AND 10

2010/01/11 11:44 2010/01/11 11:44