Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[6주차] 27. PL/SQL언어, 사용전 기초 지식 본문

K-DigitalTraining 강의/2. Oracle + PLSQL

[6주차] 27. PL/SQL언어, 사용전 기초 지식

이대곤 2022. 6. 16. 12:06

PL(Procedural Language, 절차적 언어)/SQL이란?

오라클 DBMS에서 SQL 언어를 확장하여 사용하기 위해 만들어진 프로그래밍 언어이다.

SQL 명령문만으로 처리하기에는 복잡한 자료의 저장이나 프로시저와 트리거 등을 작성하는 데 쓰인다.

각 관계형 데이터베이스마다 확장 언어들이 있는데, 이러한 확장 언어의 대표적인 예로 마이크로소프트의 마이크로소프트 SQL 서버와 SybaseASE에는 트랜잭트 SQL(Transact SQ; TSQL)이 있고 PostgreSQL에는 PL/pgSQL 마지막으로 IBM DB2는 ISO SQL의 SQL/PSM 표준을 따르는 SQL Procedural를 포함한다.

PL/SQL 코드를 실행하는 위치

SQL PLUS 콘솔창, SQL DEVELOPER 둘 다 그냥 쿼리문 사용하듯이 입력후 실행

PL/SQL 코드를 실행하기 위한 이름없는 일회용 함수를 작성하는 방법

declare
-- 변수선언, 선언할게 없으면 declare를 지워줘도 됨
begin
-- 실행부 코딩
end;
/  -- 콘솔을 이용하는 SQL PLUS 창에서는 이걸 쳐줘야 코드의 끝을 알릴 수 있음(SQL DEVELOPER 에서는 없어도 됨)

PL/SQL 코드의 실행결과를 눈으로 보기위해 필요한 명령

* SQL PLUS 콘솔에서는 콘솔창을 닫았다가 실행할 때 마다 1번씩은 입력해 줘야하는 명령이다.

-- 결과를 화면에 출력할 준비를 하겠다는 의미.ㅡ이게 없으면 코드가 실행되어도 결과값이 화면에 안보여짐
-- 이건 SQL DEVELOPER에서도 맨 윗줄에 입력해둬야 함.
set serveroutput on

1-1. 변수를 선언, 값 할당, 연산, 출력 방법을 알 수 있는 기본예제

- 사용할 변수의 선언은 declare 부에서 이뤄진다.

- 변수에 값을 할당하는 연산자는 ':=' 이다.

- 출력을 위한 dbms_output.put() 함수를 사용했다면 이를 최종적으로 잘 출력하기 위해서는
  맨 마지막 줄에 줄바꿈을 포함하는 dbms_output.put_line()을 사용해줘야 한다.

  그리고 출력문 안에서 문자열 혹은 값들을 연결하고 싶다면 "||" 를 사용한다.

- SQL PLUS에서는 코드의 끝을 알리기 위해 '/' 를 마지막에 입력해줘야 함.

- 앞에서 배운 mode(), floor(), round() 등의 Oracle의 주요 함수를 여기서도 동일하게 사용가능하다.

- [6주차] 17. 쿼리문 사용시 사용할 수 있는 주요함수(그룹함수 + 기타)***

declare 
	x number := 10; -- 변수 선언과 동시에 값 할당 가능
	y number;
	z number;
	name varchar2(10);
	addr varchar2(10);
begin
	y := 20;
	z := x+y; -- 덧셈연산 가능
	name := '김연아';
	addr := '서울';
	dbms_output.put('z=' || z || '입니다.' || chr(10)); -- chr(10) 은 엔터의 아스키코드값임
	dbms_output.put_line('z=' ||(x+y)||'입니다.'); -- 연산은 ( )로 묶어주지 않으면 오류남
	dbms_output.put_line('12 나누기 7의 몫: ' ||(12/7)); -- 나눗셈 연산
	dbms_output.put_line('12 나누기 7의 몫: ' ||floor(12/7)); -- 결과에서 소수점 이하를 버리는 floor 함수
	dbms_output.put_line('12 나누기 7의 몫: ' ||round(12/7)); -- 반올림하는 round 함수
	dbms_output.put_line('12 나누기 7의 나머지: ' || mod(x,y)); -- 나머지를 구하는 mod 함수
	dbms_output.put(1);
	dbms_output.put_line(2);
	dbms_output.put_line(name || '는 ' || addr || '에 살고있습니다.');
end;
/ -- SQL DEVELOPER 에서는 안쳐줘도 되나, 콘솔을 이용하는 SQL PLUS 창에서는 이걸 쳐줘야 코드의 끝을 알릴 수 있음

z=30입니다.
z=30입니다.
12
김연아는 서울에 살고있습니다.

PL/SQL 처리가 정상적으로 완료되었습니다.

1-2. 사용자 입력을 받아 사용하는 방법을 알 수 있는 기본예제

사용자 입력을 받고 싶다면 '&아무거나' 를 위치시키면 되는데 아래와 같이 사용하면 된다. 

* '& '안에 들어가있는 문자열에 공백이 있으면 에러나니 이 부분을 주의하여 사용하자.

-- 사용자한테 입력받은 값으로 변수를 초기화 하거나 입력받자마자 사용하는 예시
-- 아래서 사용자에게 입력받는 값은 총 3개임에 주의하자

declare 
	x number := '&x값'; -- 사용자로부터 입력받아 초기화
	y number := '&y값'; -- 사용자로부터 입력받아 초기화
begin
    dbms_output.put_line('3개 총 합 = ' ||(x + y + '&k')||'입니다.');
end;
/ 

x값의 값을 입력하십시오: 10
구   2: x number := '&x값'; -- 사용자로부타 입력받아 초기화
신   2: x number := '10'; -- 사용자로부타 입력받아 초기화

y값의 값을 입력하십시오: 10
구   3: y number := '&y값'; -- 사용자로부타 입력받아 초기화
신   3: y number := '10'; -- 사용자로부타 입력받아 초기화

k의 값을 입력하십시오: 10
구   5:     dbms_output.put_line('3개 총 합 =' ||(x + y + '&k')||'입니다.');
신   5:     dbms_output.put_line('3개 총 합 =' ||(x + y + '10')||'입니다.');

3개 총 합 = 30입니다.

PL/SQL 처리가 정상적으로 완료되었습니다.

 

Comments