ORACLE [PLSQL] 상수와 변수

2013.12.27 19:46

가을의곰을... 조회 수:4442



http://radiocom.kunsan.ac.kr/lecture/oracle/plsql/plsql_variable.html



PL/SQL 상수와 변수




경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

상수와 변수는 사용되기 전에 먼저 선언되어야 하며, 선언된 상수와 변수는 SQL 문에서 사용된다.
변수는 어떠한 SQL 데이터타입도 가능하므로 CHAR, DATE, NUMBER, BOOLEAN, BINARY_INTEGER이 될 수 있다.

예를 들어, part_no 변수에 4자리 수 NUMBER를 선언하고, 또한 in_stock 변수에 논리값 TRUE, FALSE를 선언하는 예는 다음과 같다.

 
  part_no NUMBER(4); 
  in_stock BOOLEAN; 

RECORD나 TABLE로 된 전체 데이터타입을 가지는 레코드나 PL/SQL 테이블도 선언할 수 있다.


변수값 지정 방법

 
방법1) := 연산자에 의한 지정 
    := 연산자 왼쪽에 변수를,  
    := 연산자 오른쪽에 표현식이 놓인다. 
 예) 
   tax := price *tax_rate; 
   bonus := current_salary*0.10; 
   amount := TO_NUMBER(SUBSTR('750 dollars',1,3)); 
   valid := FALSE; 
 
방법2) select나 fetch에 의해서 변수값 지정 
다음은 emp 테이블에서 sal을 select하여 10%의 보너스를 오라클이 계산하는 예이다. 
 예) 
   SELECT sal * 0.10 INTO bonus FROM emp WHERE empno=emp_id; 
 
그러므로 변수 bonus는 다른 계산에서 사용할 수 있다.  
 
상수의 선언은 변수선언 방법에 CONSTANT라는 예약어를 사용하면 된다.
다음은 변수 credit_limit에 상수값을 선언하는 예이다. 
 예) 
   credit_limit CONSTANT REAL := 5000.00;
 

PL/SQL 선언부에는 BEGIN ... END절에서 사용할 매개변수와 일반적인 변수를 선언하게 된다. 일반적인 변수는 로직을 구현하면서 생성되는 데이터를 임시로 저장할 때 사용되는 타입이다. 변수에는 다음과 같은 4가지 종류가 있다.

SCLAR 변수 하나의 SCLAR 변수에 사용자의 임시 데이터를 하나만 저장할 수 있는 타입으로 대부분의 변수는 SCLAR 변수이다.
REFERENCES 변수 변수를 정의할 때 타입과 용량을 알고 있으면, SCLAR 변수를 사용하면 좋지만, 그렇지 않은 경우 어떤 테이블, 어떤 컬럼의 값을 변수로 지정해야하는 경우에 해당 테이블명과 컬럼 명을 정의하여 해당 테이블과 해당 컬럼의 데이터 타입과 크기를 그대로 참조하여 정의할 수 있다.
또한 정의해야할 변수가 특정 테이블의 모든 컬럼을 대상으로 선언해야 하는 경우에도 이 타입을 선언하면 효과적으로 선언된 변수를 사용할 수 있다.
COMPOSITE 변수
record형 변수 여러 개의 필드를 묶어서 하나의 레코드 타입으로 변수를 선언하여 사용
table형 변수 일반 프로그래밍에서 사용되는 배열변수(array variable) 형식
BIND 변수 데이터베이스 내에 생성된 PL/SQL 블럭을 실행하기 위해서는 SQL*Plus에서 EXECUTE 명령을 실행해야 한다.
이 경우 실행된 PL/SQL 블럭의 실행 결과를 OUT 또는 INOUT 매개변수를 통해 SQL*Plus 상에서 참조하는 경우가 있다. 이 때 SQL*Plus에서 반환되는 값을 전달받기 위해 선언되는 변수를 바인드 변수라 한다.

%type 변수
%rowtype 변수





본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED