1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/********************************************************************
 파일명 : Interrupt_led.c
 
 동 작 : 
  LED의 불이 100ms마다 좌측으로 쉬프트 되면서 켜진다. 버튼을 누르면 LED가 멈추었다가 한번 더 누르면 다시 동작한다.
       
 포트연결 :
1) 포트D의 0번비트를 Switch에 연결
2) 포트E 8핀을 LED에 연결
 
 소스 설명 :
 1) AVR 입출력에 대한 헤더 파일과 인터럽트를 사용하기 위한 헤더와 delay 함수사용을 위한 헤더파일을 선언한다.
 2) 인터럽트 0 서비스 루틴을 선언한다. 
 3) 포트D의 0번비트를 입력, 포트E를 출력으로 선언
 4) 인터럽트 0을 상승엣지에서 동작하도록 설정한다.
 5) 모든 인터럽트를 허용하는 함수
 6) 100ms마다 LED가 좌측으로 쉬프트되면서 켜진다. Time_Stop이 0인경우에만 계속 쉬프트하고 1일경우 쉬프트를멈추게된다.
 7) 인터럽트를 멈추고 Time_STOP이 0일때는 1로 1일땐 0으로 값을 변경해준뒤 인터럽트를 다시 허용시킨다.
  _delay_us()함수는 104 us 까지 , _delay_ms()함수는 35 ms 까지 지원한다.
********************************************************************/
 
// 1)
#include<avr/io.h>
#include<avr/interrupt.h>
#include<util/delay.h>
unsigned char Time_STOP = 0;
// 2)
SIGNAL(SIG_INTERRUPT0);
int main(){
 unsigned  char LED_Data = 0x01,i; 
// 3)
 DDRD = 0xFE;   
  DDRE = 0xFF;  
// 4)
 EICRA = 0x0F;  
 EICRB = 0x00
 EIMSK = 0x01;  
 EIFR = 0x01
// 5)
 sei();
 while(1){
// 6)
     PORTE = LED_Data;
  if(Time_STOP == 0) {
    if(LED_Data == 0x80) { LED_Data = 0x01; }
    else { LED_Data <<= 1; }
  }
 
 for(i=0;i<10;i++)
     _delay_ms(100);  
 
 }
 return 0
}
// 7)
SIGNAL(SIG_INTERRUPT0){      
 cli();
 if(Time_STOP == 0)
 Time_STOP = 1;
 else
 Time_STOP = 0;
 sei();
}
cs


'프로그래밍 > ATMega128' 카테고리의 다른 글

(ATmega128) 타이머로 LED 켜기  (0) 2016.07.10
(ATMega128) PWM 사용하기  (0) 2016.07.10
(ATMega128) FND값 올리기  (0) 2016.07.10
(ATMega128) Switch 누른데로 LED켜기  (0) 2016.07.10
(ATMega128) LED 켜기  (0) 2016.07.10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/********************************************************************
 파일명 : FND.c
 
 동 작 : 
  프로그램이 시작하면 500ms 마다 FND 에 0부터 9 , A ~ F 그리고 '.', '_'을
  순차적으로 출력한다.
       
 포트연결 :
 포트D 0 ~ 7 을 8핀 케이블로 FND 모듈의 SA_A ~ SA_H 에 연결한다.
 PD0 ~ PD7 -> SA_A ~ SA_H
 소스 설명 :
 1) AVR 입출력에 대한 헤더 파일과 delay 함수사용을 위한 헤더파일을 선언한다.
 2) 0~9, A~F 그리고 점,밑줄 을 FND에 맞추어 정리해둔 테이블을 선언한다. 
 3) 포트D 를 출력포트로 설정한다.
 3) 포트D에 FND_DATA_TBL배열에 저장된 값을 500ms 단위로 하나씩 출력한다.
 
  _delay_us()함수는 104 us 까지 , _delay_ms()함수는 35 ms 까지 지원한다.
********************************************************************/
// 1)
#include<avr/io.h>
#include<util/delay.h>
int main(){
// 2) 
 unsigned char FND_DATA_TBL[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7C,0X07,0X7F,0X67,0X77,0X7C,0X39,0X5E,0X79,0X71,0X08,0X80};
 unsigned char cnt=0 , i ;
// 3) 
 DDRD = 0xFF
// 4) 
 while(1){
 
  PORTD = FND_DATA_TBL[cnt];
 
  cnt++;
  if(cnt>17) cnt=0//테이블 크기를 초과하는 경우 방지.
 
  for(i=0;i<50;i++)
   _delay_ms(10);
 }
 
 return 0
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/********************************************************************
 파일명 : switch.c
  동 작 : 
   Switch모듈의 눌러진 버튼과 같은 LED의 불이 점등한다.
 포트연결 :
    1) 포트B의 PB0 ~PB7 을 8핀 케이블로 Switch모듈의 BT0~7에 연결한다.
      PB0 ~ PB7 -> BT0 ~ 7
    2) 포트E의 8핀을 8핀 케이블로 LED 모듈의 LED 0 ~ 7까지 연결한다. 
      PE0 ~ 7 -> LED0 ~ 7
 소스 설명 :
 1) AVR 입출력에 대한 헤더 파일을 선언한다.
 2) 포트E 를 출력포트로 설정한다.(LED8개와 연결)
     포트B 를 입력포트로 설정한다.(스위치8개와 연결)
 3) 포트B에 연결된 버튼의 값이 포트E의 LED로 출력되고, 
  루프를 반복한다.
********************************************************************/
// 1)
#include<avr/io.h>
int main(){
// 2) 
 DDRE = 0xFF
 DDRB = 0x00;
// 3) 
while(1){
 PORTE = PINB;
 }
 return 0;
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<avr/io.h>
#include<util/delay.h>
int main(){
 char i;
// 1)
 unsigned char LED_Data=0x00;
// 2) 
 DDRE = 0xFF;
 
// 3)  
 while(1){
  
  PORTE = LED_Data;
  
  LED_Data++;
  
  for(i=0;i<100;i++)
   _delay_ms(10); //ms단위의 딜레이함수
 }
 return 0;
 }
cs

1) LED값을 저장하는 변수

2) E포트 모두를 출력으로 설정 (E포트와 LED를 연결해놓아야함)

3) 무한반복을 통해 PORTE에 LED_Data값을 넣고 LED_Data를 하나 증가시킨뒤 _delay_ms를 통해 딜레이를 준다.

    _delay_ms의 매개변수는 35까지밖에 지원하지 않아 for문을 통해 딜레이를 늘리는 방법을 써야한다.

함수
똑같은 처리를 반복적으로 사용할  쓰는 것으로 로직을 수행한  특정한 값을 반환하는 서브 프로그램이다.
함수 생성
CREATE OR REPLACE FUNCTION 함수이름(매개변수명1 매개변수1타입, 매개변수2 매개변수2타입,매개변수3 매개변수3 타입, …)
RETURN 반환 타입;
IS
  선언부
BEGIN
실행부
RETURN 반환값;
[EXCEPTION
예외처리부
END [함수이름];
 
함수 호출
함수명(매개변수1, 매개변수2, 매개변수3, …);
 
매개변수가 없는 함수를 생성할 수도 있다. (호출시 함수명만 기제해도됨)

프로시저
함수는 로직을 수행한  값을 반환하지만 프로시저는 로직 수행만  수있다.
 
프로시저 생성
CREATE OR REPLACE PROCEDURE 프로시저이름
            (매개변수1 [IN / OUT / IN OUT] 데이터 타입 [ := 기본값],
            매개변수2 [IN / OUT / IN OUT] 데이터 타입 [ := 기본값],
            매개변수3 [IN / OUT / IN OUT] 데이터 타입 [ := 기본값], …)
IS
  선언부
BEGIN
  실행부
[EXCEPTION
예외 처리부]
END [프로시저 이름 ];

함수와 다르게 매개변수에 값이 안들어왔을 경우의 값을 설정할  있다.
매개변수에 붙는 IN 입력받을 , OUT 출력할  사용하는 용어이다.
값을 프로시저를 호출한 로직의 다른 변수에 넣어주고 싶을  OUT 사용하면 된다아무것도 안적을 경우 기본적으로 IN 선언된다.
프로시저에서도 RETURN 사용할  있는데 이것은 함수와 같이 결과값을 출력하는 용도가 아닌 로직을 빠져나가는 용도로 사용한다.

프로시저 실행
EXEC 프로시저명(매개변수매개변수매개변수);
EXECUTE 프로시저명(매개변수매개변수매개변수);
 
EXEC 프로시저명(매개변수1 => 매개변수매개변수2 => 매개변수매개변수3 => 매개변수);
EXECUTE 프로시저명(매개변수1 => 매개변수매개변수2 => 매개변수매개변수3 =>매개변수);

매개변수를 순서대로 기입하는 방법도 있지만 하나씩 매칭해주는 방법도 있다.


'프로그래밍 > 오라클' 카테고리의 다른 글

(오라클) PL/SQL  (0) 2016.07.10
(오라클) With 절  (0) 2016.07.10
(오라클) 계층형 쿼리  (0) 2016.07.10
(오라클) 조인, 안시 조인  (0) 2016.07.10
(오라클) SQL 함수  (0) 2016.07.10

기본 구성
이름
IS(AS)
DECLARE
  선언부
BEGIN
실행부
EXCEPTION
  예외 처리부
END;
 
이름
이름은 사용하지 않을 수도 있다. 그러한 블록을 익명 블록이라고 한다.
 
선언부
DECLARE 시작하며 실행부와 예외 처리에서 사용할 변수,상수 등을 설정하는 곳이다.
변수 선언
  변수명 데이터타입 := 초깃값;
데이터 타입은 SQL 데이터 타입을 사용해도 된다.
상수 선언
상수명 CONSTANT 데이터타입 := 상수값;
상수는 변수와 다르게 한번 선언하면 값을 바꿀  없다.
 
PRAGMA
컴파일러가 실행되기 전에 처리하는 전처리기 역활을 하는 것으로 선언부에 명시하여 사용한다.
PRAGMA AUTONOMOUS_TRANSACTION
    트랜잭션 처리를 담당하는 PRAGMA,  트랜잭션이나 다른 트랜잭션에 영향을 받지 않고 독립적으로 현재 블록 내부에서 데이터베이스에 가해진 변경사항을 COMMIT이나 ROLLBACK하라는 지시를하는 역활을 한다.
PRAGMA EXCEPTION_INIT(예외명, 예외번호)
    사용자 정의 예외 처리를   사용하는 PRAGMA이다. 특정 예외번호를 명시해서 컴파일러에  예외를 사용한다는 것을 알린다.
PRAGMA RESTRICT_REFERECES(서브 프로그램명, 옵션)
    오라클 패키지를 사용할  선언하는 PRAGMA이다. 선언을 해놓으면 패키지에 속한 서브 프로그램에서 옵션 값에 따라 특정 동작을 제한할  사용된다.
PRAGMA SERIALLY_RESUABLE
패키지 메모리 관리를 쉽게  목적으로 사용되는 PRAGMA이다. 패키지에 선언된 변수에 대해 한번 호출된  메모리를 해제시킨다. (패키지 변수에 값을 할당해도 다음 번에 호출할 때는 할당한 값이 사라져변수를 초기값이나 NULL값으로 만듬)
 
실행부
실제 로직을 처리하는 부분이다. 일반 SQL문과 제어문이 들어갈  있고 DDL문은 사용할  없지만 DML문은 사용할  있다. 
DML문을 사용할  선언부에서 선언한 변수를 사용하고 싶다면 
SELECT쿼리명1, 쿼리명2, … INTO 변수명1, 변수명2, … FROM …
같이 INTO 절을 사용하여 타입에 맞는 변수를 넣어주면 된다. 
다른 프로그래밍 언어와같이 문장마다 세미콜론을 붙어야 한다.
 
예외처리 : 실행부를 수행하다가 예외가 발생하면 EXCEPTION이하의 문장을 수행하는 곳이다.
 
연산자
** : 제곱 연산자
+,-,*,/ : 사칙연산
|| : 문자열 연결 연산자
=,<,>,<=,>=,<>,!=~=,^=,is null, Like, Between, in : 비교 연산자
not, and ,or : 논리 연산자
 
 
주석
실제 로직에서 처리가 안되는 부분으로 부가설명을 붙이기위한 용도로 사용한다.
한줄만 주석을 하고싶다면 ‘--‘(- 두개) 블록단위로 주석을 만들고 싶다면 양끝에/* */ 붙이면 된다.
 
라벨
라벨생성 : <<라벨명>>
프로그램 상에 특정 부분에 이름을 부여하는 것으로 가독성을 높이는 것과 GOTO문을 사용할  사용한다.
GOTO 
라벨명이 있는 곳으로 이동하는 제어문 이다.
GOTO 라벨명;
 
PL/SQL 제어문
다른 프로그래밍 언어에서 제공하는 제어문들을 PL/SQL에서도 지원한다.
IF, CASE, LOOP, WHILE, FOR, CONTINUE, GOTO  이있다.
 
IF
 
IF 조건 THEN
  조건 처리;
END IF;
 
IF 조건 THEN
조건 처리;
ELSE
  조건 처리
END IF;
 
IF 조건1 THEN
  조건 처리
ELSIF 조건2 THEN
  조건 처리
ELSE
  조건 처리
END IF;
 
다른 프로그래밍 언어에서 사용하는것과 유사한 IF문이다.  else if 썼던 것을 elsif  쓴다는 점과 if문이 끝나는 곳에 세미콜론’;’ 붙여줘야 한다는 점이 다르다.
 
CASE
If문과 같은 처리를하는 제어문이다.
 
CASE 표현식
    WHEN 결과1 THEN
        처리문1;
    WHEN 결과2 THEN
        처리문2;
    ELSE
        처리문 3;
END CASE;
 
CASE WHEN 표현식1 THEN
        처리문1;
CASE WHEN 표현식2 THEN
        처리문2;
    ELSE
        처리문 3;
END CASE;
 
LOOP 
특정조건을 만존할 때까지 무한 반복하는 제어문 이다.
 
LOOP
    연산;
    EXIT WHEN 조건;
END LOOP;
 
WHILE
먼저 조건을 대조후 반복문에 들어가는 제어문이다.
 
WHILE 조건
LOOP
    연산;
END LOOP;
 
FOR
인덱스의 초기값과 최종값을 정하여 인덱스가 최종값이 될때까지 반복하는 제어문이다.
FOR 인덱스 IN [REVERSE] 초깃값..최종값
LOOP
    연산;
END LOOP;
 
CONTINUE
위의 반복문들 내에 사용하는 제어문으로 특정조건에서 CONTINUE아래 로직을 생략하고 상단의 루프로 건너가는 역활을 한다.
CONTINUE WHEN 조건;



'프로그래밍 > 오라클' 카테고리의 다른 글

(오라클) PL/SQL 함수와 프로시저  (0) 2016.07.10
(오라클) With 절  (0) 2016.07.10
(오라클) 계층형 쿼리  (0) 2016.07.10
(오라클) 조인, 안시 조인  (0) 2016.07.10
(오라클) SQL 함수  (0) 2016.07.10

WITH 

동일한 구문을 WITH절을 통해  번만 적으면 다른 서브쿼리내에서 참조하여  사용할  있는 것이다.


With 별칭1 AS (select ),

별칭2 AS (select ),

별칭 3 AS (select )

          …

Select 


순환 서브 쿼리

With 내에 계층형 쿼리 처럼순환 서브쿼리로 계층을 표현   있다.

계층형 쿼리에서 사용했던 ORDER SIBLINGS BY 절과 같은 기능으로 쿼리를 레벨별로 정렬하려면 SEARCH 구문을 사용하면 된다.

SEARCH 구문의 사용방법

 

  • DEPTH FIRST BY : 같은 노드에 있는 로우 형제로우 보다 자식 로우가 먼저 조회된다. (깊이우선)
  • BREADTH FIRST BY : 자식 로우보다 형제 로우가 먼저 조회된다. (레벨순)
  • 같은 레벨에 있는 형제 로우일 때는 BY 다음에 명시한 컬럼 순으로 조회된다.
  • SET 다음에는 가상 컬럼 형태로 최종 SELECT 절에서 사용할  있다.


'프로그래밍 > 오라클' 카테고리의 다른 글

(오라클) PL/SQL 함수와 프로시저  (0) 2016.07.10
(오라클) PL/SQL  (0) 2016.07.10
(오라클) 계층형 쿼리  (0) 2016.07.10
(오라클) 조인, 안시 조인  (0) 2016.07.10
(오라클) SQL 함수  (0) 2016.07.10

계층형 쿼리 기본양식

Select 출력할 퀄럼

From 테이블명

Where 조건

Start With 최상위 계층의 조건

Connet by [NoCycle] 계층이 연결되는 조건

Order [Siblings] by 정렬할 퀄럼

 

Order by 사용할 경우 계층형 구조에 관계없이 정렬하기 때문에 문제가 된다.

그래서 정렬이 필요할  ‘Order Siblings by’절을 사용해서 계층형 구조를 보존해야 한다.

 

 

계층형 쿼리의 내부 절차

1.     조인이 있으면 조인을 먼저 처리

2.     START WITH 절을 참조해 최상위 계층을 선택

3.     CONNECT BY 절에 명시된 구문에 따라 계층형 관계를 파악해 하위 계층을 차례로 선택.

4.     WHERE조건에 맞는지 찾음

 

계층형 쿼리 관련 함수, 의사 퀄럼

Level : 계층형 쿼리에서만 사용할  있는 의사퀄럼이다계층형 구조에 따른 레벨

             값을 자동으로 반환해준다.(값은 1부터 시작)

 

Connect_By_Root [퀄럼이름] : 계층형 쿼리에서 최상위 행을 반환하는 연산자이다.

 

Connect_By_IsLeaf : 계층형 구조에서 자신이 최하위 계층이면 아니면 0

                                    반환하는 의사 퀄럼이다.

 

Connect_By_IsCycle : 계층형 구조에서 하위계층으로 탐색중 무한루프에 빠지는

                                    퀄럼이 있을 경우 1 출력하는 의사 퀄럼이다.

 

Sys_Connect_By_Path(퀄럼, char1) : 최상위 계층에서 자기자신까지 연결된 경로를

                                                            출력하는 것으로 중간에 char1값이 들어간다.

'프로그래밍 > 오라클' 카테고리의 다른 글

(오라클) PL/SQL  (0) 2016.07.10
(오라클) With 절  (0) 2016.07.10
(오라클) 조인, 안시 조인  (0) 2016.07.10
(오라클) SQL 함수  (0) 2016.07.10
(오라클) 의사퀄럼, 표현식, 조건식  (0) 2016.07.10

조인

관계형 데이터베이스에서 SQL을 이용해 관계를 맺는 방법이다.

조인에는 내부조인외부조인, ANSI조인등이 있다.

 

내부조인

동등조인 조건절에서 등호(=) 연산자를 사용해 2개 이상의 테이블뷰를 연결한 조인이다.

(WHERE 절 안의 등호(=) )

         WHERE 테이블1의 컬럼 테이블2의 컬럼

세미조인 서브쿼리를 사용해 서브 쿼리에 존재하는 데이터만 메인 쿼리에서 추출하는 방법이다.

                동등조인과 비슷해보이지만 중복을 제거하는 효과를 가지고있다.

       (WHERE절 안의 IN, EXIST)

안티조인 서브 쿼리에 존재하지 않는 데이터만 메인 쿼리에서 추출하는 방법.

                세미조인과 반대되는 개념이다역시 중복처리가 된다.

                (WHERE 절 안의 NOT IN, NOT EXISTS)

셀프조인 한테이블을 사용해 조인하는 방법.

 

외부조인

MERGE랑 비슷한 구조인데 조인 조건에 만족하는 데이터 외에 조건에 명시된 컬럼에 갑싱 없거나 데이터가 아예없더라도 추출하는 조인 방법이다.

WHERE 절에서 외부조인으로 설정할 컬럼뒤에 ‘ (+) ‘ 를 붙여 외부조인이란 것을 명시하여 사용한다.

외부조인을 사용할 경우 조건에 해당하는 모든 것에 외부조인마크를 붙여야한다.

·      조인 대상 테이블 중 데이터가 없는 테이블 조인 조건에 (+)를 붙인다

·      외부 조인의 조인 조건이 여러 개일 때 모든 조건에 (+)를 붙인다

·      한번에 한 테이블에만 외부 조인을 할 수 있다.

·      (+)연산자가 붙은 조건과 OR,IN 연산자를 같이 사용 할 수 없다.(IN은 결과가 1개일땐 가능함)

 

크로스(카타시안조인

WHERE 절에 조인 조건을 안넣는 조인으로 조인이 없기 때문에 테이블 * 테이블행의 결과값이 나온다.

 


안시(ANSI) 조인

ANSI SQL 문법에서 사용한 조인을 오라클에서 변환해서 사용하는 것이다.

WHERE에서 조인하는 것이 아닌 FROM 절에서 조인한다.

 

내부조인

FROM 

INNER JOIN 테이블,뷰 이름 ON (조인 조건)

    (조인조건에 쓰인 컬럼 이름이 동일 할 경우 ON대신에 USING으로 바꾸고 테이블명 빼도 됨)

WHERE 

 

외부조인

FROM 테이블1

LEFT(RIGHT) [OUTER] JOIN 테이블2 ON (조인 조건)

         기준 테이블이 왼쪽에있으면 LEFT 오른쪽에있으면 RIGHT를 붙이면된다 OUTER생략가능

WHERE

 

크로스(카타시안)조인

FROM 테이블1

CROSS JOIN 테이블 2;


FULL OUTER조인

외부 조인은 한쪽을 대상으로 빈곳도 그대로 출력했는데 FULL OUTER는 두개다 외부 조인을 적용하는 것이다.

FROM 테이블1

FULL OUTER JOIN 테이블2 ON 조인조건

숫자 함수

         ABS(n) : 매개변수로 숫자를 받아 그 절대값을 반환하는 함수

         CEIL(n) : 매개변수 n과 같거나 가장 큰 정수를 반환한다.

         FLOOR(n) : 매개변수 n보다 작거나 가장 큰 정수를 반환한다.

         ROUND(n,i) : 매개변수 n값을 i+1번째 소수점에서 반올림 하는 것(소숫점 i번째까지 출력)

                             i가 음수가 되면 i번째에서 반올림

         TRUNC(n,i) : 매개변수 n값을 i+1번째 소수점에서 버림 하는 것(소숫점 i번째까지 출력)

                             i가 음수가 되면 i번째에서 버림

 

문자 함수

      INITCAP(char) : 구문자 기준 첫글자를 대문자로 나머지는 소문자로 반환

         LOWER(char) : 전부 소문자

         UPPER(char) : 전부 대문자

         CONCAT(char1, char2) : 두 문자를 합쳐서 반환

         SUBSTR(char, pos, len) : char문자의 pos번째에서 len길이 만큼 짜른 문자를 반환

         LTRIM(char1, char2) : char1 왼쪽에서 char2문자를 비교해가면서 같으면 제거한 문자를 반환

         RTRIM(char1, char2) : char1 오른쪽에서 char2문자를 비교해가면서 같으면 제거한 문자를 반환

         LPAD(expr1, n, expr2) : expr2 문자열을 n자리만큼 왼쪽부터 채워서 expr1를 반환하는 함수

         RPAD(expr1, n, expr2) : expr2 문자열을 n자리만큼 오른쪽부터 채워서 expr1를 반환하는 함수

         REPLACE(char, search, replace) : char에 search 문자를 찾아 replace 값으로 바꾸어 반환하는 함수

         TRANSLATE(char, from_str, to_str) : REPLACE와 유사하나 한글자씩 매핑하여 바꾼 결과를 반환

         INSTR(str, substr, pos, occur) : str 문자열에 substr과 일치하는 위치를 반환하는데 pos

                                               시작위치, occur 몇 번째 일치하는가를 적는다.

         LENGTH(char) : char의 문자열의 개수

         LENGTHB(char) : char의 문자열의 바이트 수

날짜 함수

         SYSDATE : 현재날짜와 시간을 알려주는 함수 (DATE)

         SYSTIMESTAMP : 현재날짜와 시간을 알려주는 함수 (TIMESTAMP)

         ADD_MONTHS(date, int) : date값에 int 값만큼 월을 더한 날짜를 반환

         MONTHS_BETWEEN(date1, date2) : 두 날짜의 개월 수 차이를 반환하는 함수 date1-date2

         LAST_DAY(date) : date에 있는 달의 마지막 일자를 반환

         ROUND(date, format) : date 값에 format에 맞춰서 반올림한 날짜를 반환한다.

         TRUNC(date, format) : date 값에 format에 맞춰서 버림한 날짜를 반환한다.

         NEXT_DAY(date, char) : date를 char에 명시한 날짜로 다음 주 주중 일자를 반환한다.

변환함수

         TO_CHAR(숫자,날짜, format) : 문자로 변환해주는 함수, format으로 형식에맞게 출력가능

         TO_NUMBER(expr, format) : 문자를 숫자로

         TO_DATE(char,format) : 문자를 DATE값으로 변환

         TO_TIMESTAMP(char, format) : 문자를 TIMESTAMP 값으로 변환

NULL관련 함수

         NVL(expr1, expr2) : expr1이 NULL일 때 expr2를 반환

         NVL2(expr1,expr2,expr3) : 순서대로 NULL인지 비교해서 NULL이면 다음값 반환

         COALESCE(expr1, expr2, …) : 매개변수로 들어오는 표현식에서 NULL이아닌 값을 찾아 반환

         LNNVL(조건식) : 조건식 결과가 TRUE 이면 FALSE, FALSE이거나 UNKNOWN이면 TRUE반환

         NULLIF(expr1, expr2) : exp1과 expr2를 비교해서 같으면 NULL, 아니면 expr1을 반환

기타 함수

         GREATEST(expr1, expr2, …) : 가장 큰 값을 반환

         LEAST(expr1, expr2, …) : 가장 작은 값을 반환

         DECODE(expr, search1, result1, search2, result2, .., default) : switch case문과 유사함

+ Recent posts