[펌] PL/SQL 02

프로그래밍/DB 2007. 11. 27. 14:07 Posted by galad
출처 블로그 > 행운의 별자리님의 블로그
원본 http://blog.naver.com/kwakjt/26849453

1. 선언

    identifier  [constant]  datatype  [not null] [ := | Default expr ] ;

    EX> v_hiredate  DATE;
           v_deptno    NUMBER(2)   NOT NULL := 10;
           v_location  VARCHAR2(13) := ‘Atlanta’;
           v_comm     CONSTANT  NUMBER  := 1400;
  

  설명

    identifier   : 변수명
    Constant  : 상수(변경불가). 상수는 초기화 필수.
    datatype   : 데이터 타입(date, number, varchar2…)
    Not Null    : 변수제약. Not Null 변수는 초기화 필수.
    expr        : 표현식(리터럴, 다른 변수, 연산자나 함수를 포함하는 표현식)


  주의

    두 변수는 서로 다른 block 에서라면 동일 이름을 가질 수 있고, 변수명은 block에서 사용 된 테이블 column의 이름과 같아서는 않된다.


2. 변수에 값 지정하기

    idenfier  := expr ;


    EX> v_empno := 7369;

           v_name := 'SMITH';

           v_limitdate := Sysdate + 7;

 

3. %TYPE을 이용한 변수 선언
   : 변수의 데이터형과 정밀도를 직접 선언하지 않고 이미 선언된 변수나 데이터베이스의 열에 맞추어 선언할 수 있음.
   데이터베이스 수준에서 열 데이터형이 변경되더라도 PL/SQL은 수정할 필요없음.

 

    identifier  tablename.columnname%Type;
    identifier  defined identifier%Type;

 

    identifier : 변수명.
    tablename : 참조하고자 하는 테이블명.
    columnname : 참조하고자 하는 필드명.
    defined identifier : 이미 선언된 변수명.

 

4. %ROWTYPE을 이용한 변수 선언
    정의할 변수가 특정 테이블, 뷰의 모든 컬럼을 대상으로 선언해야 할 경우 테이블, 뷰의 모든 컬럼의 데이터형, 크기, 속성등을 그대로 사용할 수 있음.
    EX> v_emp    emp%ROWTYPE;
       
5. 바인드 변수 : Host 환경에서 PL/SQL에게 값을 전달하거나 전달받기위해 선언된 변수.

    VAR[IABLE] 변수명  [ NUMBER | CHAR(n) | VARCHAR2(n)]


    EX> variable ret_code number

    PL/SQL에서, bind variable을 참조하기 위해 콜론(:)을 변수명의 접두어로 붙임.
    EX>
    ...
    Begin
      Select sal Into v_sal
      From   emp
      Where  empno = 7369;
      :salary := v_sal;
    ...

 

6. 치환변수 : 입력 프롬프트에서 블록 내부로 직접 값을 전달하는 변수
    SQL>Set Verify Off
    SQL>Accept 변수명  Prompt ‘값을 등록하세요: ’

    PL/SQL 블록 내부에서 치환변수 사용시 &변수명 사용
    EX> v_name   varchar2(20) := &p_name;

 

    ※ SET VERIFY ON/OFF : &를 이용한 치환 변수를 사용할 때 치환되기 전/후의 자세한 값을 보일것인지의 여부를 결정 한다. 기본값은 ON 이다.

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

[펌] PL/SQL 04  (0) 2007.11.27
[펌] PL/SQL 03  (0) 2007.11.27
[Oracle/펌] PL/SQL 01  (0) 2007.11.27
[JDBC] 06 PL/SQL  (0) 2007.11.27
[JDBC] 05 ResultSet  (0) 2007.11.27