PL/SQL
pl /sql 이란
☆오라클에서 제공하는 프로그래밍 언어이다.
☆일반 프로그래밍 언어적인 요소를 다 갖고 있으며
데이터베이스 업무를 처리하기 위한 최적화된 언어이다
PL은 SQL에서 안되는 것을 할수 있다 . 입력 수정 검색 삭제 뿐만 아니리 다는것도 할수잇다
변수 선언을 할 수 있다
비교 처리를 할 수 있다
반복 처리를 할 수 있다
장점
BEGIN _ END 와 같은 블록 구조를 가지므로 블록안의 여러 SQL 구문이 한번에 서버로 전송되므로 수행속도가 항상되고 통신량도 줄일수 잇다
PL/SQL은 블록 구조 되어 있으며 3부분으로 나눌 수잇다
IS(A)
이름부 ( 이 블록의 이름을 지정한다.)
프로그램의 작성 요령
•PL/SQL블록 내에서는 한 문장이 종료할 때마다 세미콜론을 사용한다.
•END문 뒤에 ;을 사용하여 하나의 블록이 끝났다는 것을 명시한다.
•PL/SQL 블록의 작성은 편집기를 통해 파일로 작성할 수도 있고, 프롬프트에서 바로 작성할 수도 있다.
•SQL*PLUS 환경에서는 DECLARE나 BEGIN이라는 키워드로 PL/SQL블록이 시작하는 것을 알 수 있다.
•단일 행 주석은 –이고 여러 행 주석은 /* */이다.
PL/SQL 블록은 행에 /가 있으면 종결된다.
변수 선언
- 형식
변수 이름 [CONSTRAINT] 데이터 타입 [NOT NULL]
[:= | DEFAULT EXPRESSION];
- 변수의 값 지정
변수 이름 := 상수, 다른 변수, 연산자나 함수를 포함하는 표현식
변수의 선언 및 값을 입력 받고 그 변수의 값 출력하기
사용자롤 부터 두개의 숫자를 입력 받아서 출력
- ||는 JAVA 출력문에서의 + 와 같은 개념이다
-DECLARE 부분에서 선언한 변수들으 / 기호를 만나서 해당 PL/SQL 문이 종ㄽ 됨과 동시에 사라진다
(프로시저로 민들면 다시 정의할 필요 없음)
DECLARE
V_NO1 NUMBER := &NO1;
V_NO2 NUMBER := &NO2;
BEGIN
DBMS_OUTPUT.PUT_LINE ('첫번째 수 ' || V_NO1 || ', 두번째 수 ' || V_NO2);
END;
/
no1의 값을 입력하십시오: 1188
구 6: V_NO1 NUMBER := &NO1;
신 6: V_NO1 NUMBER := 1188;
no2의 값을 입력하십시오: 1199
구 8: V_NO2 NUMBER := &NO2;
신 8: V_NO2 NUMBER := 1199;
첫번째 수 1188, 두번째 수 1199
======================================================================================
DECLARE
V_NO1 NUMBER := &NO1;
V_NO2 NUMBER := &NO2;
V_SUM NUMBER;
BEGIN
V_SUM := V_NO1 + V_NO2;
DBMS_OUTPUT.PUT_LINE ('첫번째 수 : ' ||V_NO1|| ', 두번째 수 : '||V_NO2||', 합은 : '||V_SUM||' 입니다'); --/ || 는 + 와 같은 말이다
END;
/
↓↓↓↓↓↓↓
no1의 값을 입력하십시오: 4
구 6: V_NO1 NUMBER := &NO1;
신 6: V_NO1 NUMBER := 4;
no2의 값을 입력하십시오: 5
구 8: V_NO2 NUMBER := &NO2;
신 8: V_NO2 NUMBER := 5;
첫번째 수 : 4, 두번째 수 : 5, 합은 : 9 입니다
======================================================================================
단수 변수 (스칼라 변수)
스칼라 변수란
PL/SQL에서 변수를 선언할때 지정하는 자료형은 숫자를 저장하려면 NUMBER를 사용하가고 , 문자를 저장하려면 VARCHAR2를 사용해서 선언 한다 , SQL에서의 자료형 지정과 거의 동일 하다.
=======================================================================================
참조 변수 %TYPE
참조(Reference) 변수란?
데이터 형을 다른 컬럼에서 참조 후 지정하는 방식의 변수
1.%TYPE : 이전에 선언된 다른 변수 또는 데이터베이스의 칼럼에 맞추어 변수를 선연 하기 위해 사요
형식 : 변수명 참조할테이블명. 테이블의 컬럼명%TYPE;
TYPE 변수를 사용하여 데이터 조회하기
%ROWTYPE
%ROWTYPE: %TYPE이 칼럼 단위로 참조한다면 로우(행) 단위로 참조하는
%ROWTYPE이 있다.
형식: 변수명 참조할 테이블명% ROWTYPE;
%ROWTYPE을 사용 시 장점은 특정 테이블의 칼럼의 개수와 데이터 형식을 모르더라다도 지정할 수 있다는 것이다 . SELECT 문장으로 행 검색시 유리
복합 변수 - 레코드 타입
복합 변수(조합변수)- 레코드 타입, 테이블 타입
변수 하나안에 사용자가 원하는 여러 가지 다른 유형의 데이터를 포함 해서 사용자가 원하는 새로운 형태로 만든 변수
레코드 타입 변수란>
프로그램 언어의 구조체와 유사하다 PL./SQL RECORD는 FIELD들의 집합을 하나의 논리적 단위로 처리할 수 있게 해주므로 테이블의 ROW를 읽어올 때 편리하다
형식 : TYPE type_name IS RECORD
(field_ name 1,...);
identifier_name type_name;
type_name은 구조체의 이름이고 , identifier_name 은 구조체를 이용해 구체화 시킨 것이다. 자바로 치면 일종의 객체라고 할수 있음
조건문 - IF
1. IF~END IF
<형태>
IF 조건 THEN
실행문장;
EN IF;
/
IF~THEN~ELSIF~END IF
<형태>
IF조건 THEN
실행문장;
ELSIF 조건
THEN
실행 문장;
ELSIF 조건
THEN
실행문장;
END IF;
/
=================================
IF!TGEB~ELSE ~END IF
<형태>
IF조건 THEN
실행문장;
ELSE
실행문장;
END IF;
/
==============================================================================
CASE 문
<형태>
CASE 조건
WHEN 조건 1 THEN
결과 1
WHEN 조건2 THEN
결과2
...
WHEN 조건N THEN
결과N
ELSE 키타처리문;
(없으면 생략 가능)
END CASE;
/
===================================
BSSIC LOOP문
<형태>
LOOP
PL/SQL 문장;
PL/SQL 문장;
EXIT 조건;
END LOOP;
/
================================
WHILE문
<형태>
WHILE 조건 LOOP
PL/SQL 문장;
PL/SQL 문장;
EXIT조건;
END LOOP;
/
===================================================================================
FOR ANS
FOR LOOP
<형태>
FOR COUNTER IN [REVERSE] ///
start .. end LOOP
실행코드 ;
실행코드;
...
END LOOP;
/
DECLARE 2 3 4 5 6 V_NO1 NUMBER := &NO1; 7 8 V_NO2 NUMBER := &NO2; 9 10 11 12 13 BEGIN 14 15 16 17 18 DBMS_OUTPUT.PUT_LINE ('첫번째 수 ' || V_NO1 || ', 두번째 수 ' || V_NO2); 19 20 21 22 23 END; 24 25 /no1의 값을 입력하십시오: 1188구 6: V_NO1 NUMBER := &NO1;신 6: V_NO1 NUMBER := 1188;no2의 값을 입력하십시오: 1199구 8: V_NO2 NUMBER := &NO2;신 8: V_NO2 NUMBER := 1199;
첫번째 수 1188, 두번째 수 1199
저의 블로그 봐주셔서 감사합니다
재.미.있.게 보셧다면 아래 하트 ❤(공감) 과 댓글 부탁 드려요 .