\

해병 코딩

728x90
반응형

 

PL/SQ

 

 

 

pl /sql 이란

 

☆오라클에서 제공하는 프로그래밍 언어이다.

☆일반 프로그래밍 언어적인 요소를 다 갖고 있으며

데이터베이스 업무를 처리하기 위한 최적화된 언어이다

 

 

PL은 SQL에서 안되는 것을 할수 있다 . 입력 수정 검색 삭제 뿐만 아니리 다는것도 할수잇다

변수 선언을 할 수 있다

비교 처리를 할 수 있다

반복 처리를 할 수 있다

 

 

장점

BEGIN _ END 와 같은 블록 구조를 가지므로 블록안의 여러 SQL 구문이 한번에 서버로 전송되므로 수행속도가 항상되고 통신량도 줄일수 잇다

 

PL/SQL은 블록 구조 되어 있으며 3부분으로 나눌 수잇다

 

IS(A)

이름부 ( 이 블록의 이름을 지정한다.)

 

 

프로그램의 작성 요령

 

PL/SQL블록 내에서는 한 문장이 종료할 때마다 세미콜론을 사용한다.
END문 뒤에 ;을 사용하여 하나의 블록이 끝났다는 것을 명시한다.
PL/SQL 블록의 작성은 편집기를 통해 파일로 작성할 수도 있고, 프롬프트에서 바로 작성할 수도 있다.
SQL*PLUS 환경에서는 DECLAREBEGIN이라는 키워드로 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

 

 

 

 

 

 

 

 

 

 

 


저의 블로그 봐주셔서 감사합니다

재.미.있.게 보셧다면 아래 하트 ❤(공감) 과 댓글 부탁 드려요 .

 

 

 

728x90
반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band