Site icon DBA의 정석

2. PL/SQL 변수 선언

2. PL/SQL 변수 선언


A. 변수 사용 및 처리


§Use

§Data 의 임시 저장 영역

§저장된 값 조작

§재사용성

§Handling

§선언 섹션에서 선언 및 초기화(optionally)

§실행 섹션에서 사용되고 새 값이 할당됨

§Sub programparameter 로 전달됨

§Sub program의 출력 결과를 보유하는데 사용됨

B. 변수 이름에 대한 요구사항


§문자로 시작한다.

§문자나 숫자를 포함할 수 있다.

§특수 문자($, _, # )를 포함할 수 있다.

§30자 이하의 문자만 포함 한다.

§예약어를 포함하면 안된다. 

C. 변수 선언 및 초기화


§Syntax

§Identifier [CONSTANT] datatype [NOT NULL]

  [:= | DEFAULT expr] ;


§Examples

DECLARE


v_hiredatae      DATE;


v_deptno         NUMBER(2) NOT NULL := 10;


v_location        VARCHAR2(13) := ‘Atlanta’;


c_comm          CONSTANT NUMBER := 1400;


EX)


set serveroutput on



declare


v_myname varchar2 (20) ;


begin


dbms_output.put_line( ‘ My name is : ‘ || v_myname);


v_myname := ‘John’;


dbms_output.put_line( ‘ My name is : ‘ || v_myname);


end;


/


D. 문자열 리터럴의 구분자


 


E. 변수 Type


§PL/SQL 변수

§Scalar

§Reference

§LOB

§Composite


§Non-PL/SQL 변수

§Bind 변수

F. %TYPE


§Database column 정의

§table.column 이름이 앞에 나옴

§type 은 같지만 제약조건은 적용되지 않음


§다른 선언된 변수

§선언된 변수의 이름이 앞에 나옴


§Syntax

identifier  table.column_name%TYPE;



EX)


declare


v_emp_lname  employees.last_name%type := ‘King’ ;


v_lname   v_emp_lname%type := ‘John’ ;


begin


dbms_output.put_line(‘Name is : ‘ || v_emp_lname);


dbms_output.put_line(‘Name is : ‘ || v_lname);


end;


/


G. Boolean


§TRUE, FALSE, NULL 값만 할당 가능

§조건식에 AND, OR, NOT 사용하여 변수 값 확인

§산술, 문자 및 날짜 표현식을 값 반환하는데 사용 가능


§example

  flag  Boolean := false;


  flag := emp_sal1 < emp_sal2;




H. Composite Data Types



 


I. Bind 변수 


§호스트 환경에서 생성

§호스트 변수라고도 한다.

§VARIABLE 키워드를 사용하여 생성

§SQL 문과 PL/SQL 블록에서 사용

§PL/SQL 블록이 실행 된 후에도 Access 가능

§앞에 ‘ : ’ 를 사용하여 참조

§PRINT 명령을 사용하여 값 출력

§SET AUTOPRINT ON 기능을 사용해서 출력

EX)


 1)    


variable b_result number



begin


select (salary*12) + nvl(commission_pct,0) into :b_result


from employees


where employee_id = 100;


end;


/



print b_result



2)


variable b_emp_salary number


SET AUTOPRINT ON


begin


select salary into :b_emp_salary


from employees


where employee_id = 178;


end;


/


select last_name, salary from employees


where salary =:b_emp_salary;



 


 


 


 


 


 


 


 


 


 


 

Exit mobile version