Site icon DBA의 정석

3. PL/SQL 실행문 작성

3. 실행문 작성


 


A. Lexical Unit


§모든 PL/SQL 블록의 기본 구조

§문자, 숫자, , 공백, Return 및 기호를 포함한 문자, 시퀀스

§다음과 같이 분류

§식별자 : v_fname, c_percent

§구분자 : ; , + – * /

§리터럴 : John, 428, True

§주석 : –, /*  */


B. 코드 주석처리



— 로 처리된 부분


C. PL/SQL 의 SQL 함수


§프로시저문 에서 사용할 수 있는 함수

§Single-row functions


§프로시저문에서 사용할 수 없는 함수

§DECODE

§Group functions

EX)


set serveroutput on


declare


v_desc_size integer(5);


v_desc varchar2(10) := ‘Hello’;


begin


v_desc_size := length(v_desc);


dbms_output.put_line( v_desc_size);


end;


/


D. PL/SQL 표현식에서 시퀀스 사용


§11g 이전

declare


v_new_id number;


begin


select my_seq.nextval into v_new_id from dual ;


END;


§11g

declare


v_new_id number;


begin


v_new_id := my_seq.NEXTVAL ;


END;



E. Data Type 변환


§Implicit Conversion


§Explicit Conversion

§함수 사용

§TO_CHAR

§TO_DATE

§TO_NUMBER

§TO_TIMESTAMP

EX)


1)


declare


v_salary number(6) :=6000;


v_sal_hike varchar2(5) :=‘1000’;


v_total_salary v_salary%type;


begin


v_total_salary := v_salary + v_sal_hike;


dbms_output.put_line(v_total_salary);


end;


/


2)


declare


v_date_of_joining date := ‘02-Feb-2000’;


v_date2 date:= to_date(‘February 02, 2000’,


    ‘Month DD, YYYY’);


begin


dbms_output.put_line(v_date_of_joining);


dbms_output.put_line(v_date2);


end;


/


F. 중첩 블록



§실행 섹션(BEGIN … END)은 중첩 블록을 포함할 수 있다.


§예외처리 섹션은 첩 블록을 포함할 수 있다.

 



EX)


1)


declare


v_father_name varchar2(20) := ‘Patrick’;


v_date_birth date := ’20-Apr-1972’;


begin


  declare


  v_child_name varchar2(20) := ‘Mike’;


    v_date_birth date := ‘12-Dec-2002’;


  begin


    dbms_output.put_line( ‘Father’’s Name : ‘ || v_father_name);


    dbms_output.put_line( ‘Date of Birth : ‘ || v_date_birth);


    dbms_output.put_line( Child’’s Name : ‘ || v_child_name);


  end;


  dbms_output.put_line( ‘Date of Birth : ‘ || v_date_birth);


end;


/


2) 중첩 블록에 수식자 사용


begin <<outer>>


declare


v_father_name varchar2(20) := ‘Patrick’;


v_date_birth date := ’20-Apr-1972’;


begin


  declare


  v_child_name varchar2(20) := ‘Mike’;


    v_date_birth date := ‘12-Dec-2002’;


  begin


    dbms_output.put_line( ‘Father’’s Name : ‘ || v_father_name);


    dbms_output.put_line( ‘Date of Birth : ‘ || outer.v_date_birth);


    dbms_output.put_line( Child’’s Name : ‘ || v_child_name);


    dbms_output.put_line( ‘Date of Birth : ‘ || v_date_birth);


  end;


end;


end outer;


/


G. PL/SQL 의 연산자


§논리적 (AND, OR, NOT)

§산술 ( + – * / )

§연결 ( || )

§연산 순서 제어를 위한 괄호


§지수 연산자(**)

§10**3 = 10*10*10

 


 


 


 


 


 


 


 


 


 


 


 


 

Exit mobile version