프로시저 작성을 위해 PL/SQL을 사용하게 되면서 갓대희님의 블로그를 참고하며 공부를 했다.

 

공부한 내용을 까먹지 않기 위해 블로그에 정리해보고자 한다.

 

우선 PL/SQL의 기본적인 정의를 정리해보자.

 

PL/SQL

  • SQL을 확장한 절차적 언어(Procedural Language)
  • Oracle의 표준 데이터 엑세스 언어로, 프로시저 생성자를 SQL과 완벽하게 통합
  • 유저 프로세스가 PL/SQL 블록을 보내면, 서버 프로세서는 PL/SQL Engine에서 해당 블록을 받고 SQL과 Procedural를 나눠서 SQL은 SQL Statement Executer로 보냄
  • PL/SQL 프로그램의 종료는 크게 Procedure, Function, Trigger로 나뉨
  • SQL에서는 사용할 수 없는 절차적 프로그래밍의 기능을 가지고 있어 SQL의 단점 보완

위와 같은 정의를 가지는 PL/SQL의 기본적인 특징도 정리해보자.

 

PL/SQL의 기본 특징

  • 블록 단위 실행 제공
    • 이를 위해 BEGIN, END; 사용
    • 마지막 라인에 /를 입력하면 해당 블록 실행
  • 변수, 상수 등을 선언하여 SQL과 절차형 언어에서 사용
  • 변수의 선언은 DECLARE 절에서만 가능
  • BEGIN 섹션에서 새 값 할당 가능
  • IF문을 통해 조건에 따라 문장들 분기 가능
  • LOOP문을 사용하여 문장 반복가능
  • 커서를 사용하여 여러 행 검색 및 처리
  • PL/SQL에서 사용 가능한 SQL은 Query, DML, TCL
    • DDL(CREATE, DROP, ALTER, TRUNCATE…), DCL(GRANT, REVOKE) 명령어는 동적 SQL을 이용할 때만 사용 가능
  • PL/SQL의 SELECT 문은 결과를 PL/SQL Engine으로 보냄
    • 이를 캐치하기 위한 변수를 DECLARE해야 하고, SELECT 문장은 반드시 한 개의 행이 검색되어야 함
    • 그리고 이를 위해 INTO 절을 꼭 사용해야 함
    • 검색되는 행이 없으면 문제 발생

 

PL/SQL Block의 기본 구조

영역 설명 필수 여부
DECLARE
(선언부)
PL/SQL에서 사용하는 모든 변수나 상수를 선언하는 부분

DECLARE로 시작
옵션
BEGIN
(실행부)
절차적 형식으로 SQL문을 실행할 수 있도록 절차적 언어의 요소인 제어문, 반복문, 함수 정의 등 로직을 기술할 수 있는 부분

BEGIN으로 시작
필수
EXCEPTION
(예외 처리부)
PL/SQL문이 실행되는 중에 에러가 발생할 수 있는데 이를 예외 사항이라고 함

이러한 예외 사항이 발생했을 때 이를 해결하기 위한 문장을 기술하는 부분
옵션
END
(실행문 종료)
  필수

 

PL/SQL Block의 종류

  • 익명 블록 : 이름이 없는 PL/SQL Block
  • 이름 있는 블록 : DB의 객체로 저장되는 블록
    • 프로시저 : 리턴 값을 하나 이상 가질 수 있는 프로그램
    • 함수 : 리턴 값을 반드시 반환해야 하는 프로그램
    • 패키지 : 하나 이상의 프로시저, 함수, 변수, 예외 등의 묶음
    • 트리거 : 지정된 이벤트가 발생하면 자동으로 실행되는 PL/SQL 블록

PL/SQL 프로그램 작성 요령

  • PL/SQL 블록 내에서 한 문장이 종료될 때마다 세미콜론(;)을 사용하여 한 문장의 끝을 명시
  • END 뒤에 세미콜론(;)을 사용하여 하나의 블록의 끝을 명시
  • 단일 행 주석은 --, 여러 행 주석은 /* */
  • 쿼리문을 실행하기 위해 '/'가 필수, PL/SQL 블록은 행에 '/'가 있으면 종결된 것으로 간주

[참고] 오라클에서 화면 출력을 위해서 PUT_LINE 프로시저 사용

  • DBMS_OUTPUT.PUT_LINE(출력할 내용)
  • 위 프로시저를 사용하여 출력되는 내용을 화면에 보여주기 위해서 환경 변수 SERVEROUTPUT ON(기본 값이 OFF)으로 변경

 

  • 메시지 출력하기 예시
SET serveroutput ON
BEGIN
	dbms_output.put_line('출력 예시');
END;

결과 - 출력 예시

 

변수 선언

  • 블록 내에서 변수를 사용하려면 선언부(DECLARE)에서 선언해야 하며 변수명 다음에는 데이터 타입을 기술
  • 문법
    • identifier [CONSTANT] datatype [NOT NULL]
      [:=|DEFAULT expression];
identifier 변수명(식별자)
CONSTANT 상수로 지정(초기값 반드시 할당)
datatype 자료형 기술
NOT NULL 값을 반드시 포함
expression Literal, 다른 변수, 연산자나 함수를 포함하는 표현식

 

문법으로만 보면 이해가 어렵기 때문에 예시를 통해 이해를 해보자

 

예시)

  • DECALRE 변수이름 데이터타입;
DECLARE NAME VARCHAR2(10);

 

  • DECLARE 변수이름 데이터타입 := 값;
DECLARE NAME VARCHAR2(10) := 'Pdache';

 

  • DECLARE 변수이름 데이터타입 DEFAULT 기본값;
DECLARE NAME VARCHAR2(10) DEFAULT 'PDH';

 

  • 한 번에 여러 개의 변수 선언
DECLARE 
	NAME	VARCHAR2(20);
	AGE		NUMBER(2); 
	GENDER	VARCHAR(50)	DEFAULT '남';

 

  • 변수 선언하고 사용
DECLARE NAME VARCHAR2(20) := '이효리';
	BEGIN
		DBMS_OUTPUT.put_Line('이효리'|| NAME); -- 출력
	END;

 

  • 변수 Type을 선언할 때 명시적으로 작성하지 않고 사용하는 방법
    • %ROWTYPE
      • 해당 테이블이나 뷰의 컬럼 속성을 그대로 들고 오는 형태
      • 사용 방법 : 변수명 테이블이름%ROWTYPE
    • %TYPE
      • 해당 테이블의 컬럼 속성을 지정하여 그대로 들고 오는 형태
      • 사용 방법 : 변수명 테이블이름.컬럼명%TYPE
  • %ROWTYPE 예시
DECLARE 
	DATA EMP%ROWTYPE;
BEGIN
	SELECT 	* INTO DATA 
	FROM 	EMP 
	WHERE 	EMPNO = '1234';
	DBMS_OUTPUT.PUT_LINE(DATA.ENAME ||','||DATA.DEPTNO);
END;

 

  • %TYPE 예시
DECLARE 
	V_ENAME  EMP.ENAME%TYPE;
	V_DEPTNO EMP.DEPTNO%TYPE;
BEGIN
	SELECT 	ENAME, DEPTNO INTO V_ENAME, V_DEPTNO
	FROM 	EMP 
	WHERE 	EMPNO = '1234';
	DBMS_OUTPUT.PUT_LINE(V_ENAME ||','||V_DEPTNO);
END;

 

변수 대입 방법

  • 명시적 값 대입
    • 변수 값을 저장하기 위해 := 사용
    • := 좌측에는 변수, 우측에는 값
  • SELECT 문을 이용한 값 대입
    • 기존 SELECT 문과는 다르게 INTO 추가
    • INTO 절에는 조회 결과 값을 저장할 변수 기술
    • SELECT 문은 INTO 절에 의해 하나의 행만을 저장
    • SELECT 다음에 기술한 컬럼은 INTO 절에 있는 변수와 1:1로 대응해야 하기 때문에 개수와 데이터 타입, 길이를 일치시켜야 한다.

'Study > Oracle' 카테고리의 다른 글

PL/SQL_6 - 테이블 함수  (0) 2021.05.18
PL/SQL 기본_5 - 함수  (0) 2021.05.17
PL/SQL 기본_4 - 프로시저  (0) 2021.05.10
PL/SQL 기본_3 - 커서  (0) 2021.05.10
PL/SQL 기본_2 - 반복문과 제어문  (0) 2021.05.10

단축키는 정말 활용도가 높습니다..

쓰다 보면 또 손에 익기 때문에 쓰는 것을 추천!

 

자주 사용하는 단축키를 정리해보겠습니다!

 

단축키 설명
Ctrl + F 찾기
Ctrl + H 찾아서 바꾸기
Ctrl + \ 화면 분할
Ctrl + w 화면 끄기
Alt + Up 커서가 있는 줄 위로 1줄 이동
Alt + Down 커서가 있는 줄 아래로 1줄 이동
Shift + Alt + Up 커서가 있는 줄 위 줄에 복사
Shift + Alt + Down 커서가 있는 줄 아래 줄에 복사
Tab 들여쓰기
Shift + Tab 내어쓰기

 

제가 자주쓰는 단축키는 이정도가 되겠습니다!

특히 Alt+Up과 Alt+Down이 저한테는 굉장히 편리한 단축키라 몰랐다면 손해보는 느낌이었을 거 같네요 ^ㅇ^

단축키는 이정도만 알아도 굉장히 삶의 질을 높일 수 있기 때문에 모르셨다면 한번 사용해 보는 것도 추천드려용!

 

'Study > Front' 카테고리의 다른 글

[Vue.js] Vue Router 설정  (0) 2021.11.15
[Vue.js] Vue CLI로 Vue 프로젝트 생성하기  (0) 2021.11.14
VSCode 확장 기능 설정하기  (0) 2021.02.23

VSCode를 사용하기에 앞서 사용하면 편리한 확장 기능들을 설정해보려 합니다.

윈도우 기준이므로 맥과는 다른 부분이 있을 수 있습니다.

확장 기능은 아래 화면의 가장 아래 버튼인 Extension에서 설치를 통해 설정할 수 있습니다.

Extension


1. 한국어 확장 팩 for VSCode

Korean Language Pack for VSCode

우선 저는 영어를 잘하지만 필요한 분들이 있을 수 있으니 알려드리는 VSCode 한국어 확장 팩입니다!

설치를 진행하고 VSCode를 재시작하게 되면 한국어가 지원됨을 확인할 수 있습니다.

 

 

2. Beautify

Beautify

이름만 봐도 알 수 있듯이 예뻐질 수 있는 기능입니다.

어지럽게 작성된 코드를 Beautify 기능을 통해 예쁘게 만들어 주기 때문에 가독성을 높일 수 있습니다.

위와 같은 화면에서 설치을 진행하고~

 

파일 -> 기본 설정 -> 바로 가기 키

설정을 위해 VSCode 상단의 파일 -> 기본 설정 -> 바로 가기 키를 선택합니다!

 

 

Beautify selection

그리고 Beautify를 검색해서 Beautify selection을 선택합니다!

 

 

Ctrl + Alt + L 로 키 바인딩

키 바인딩을 눌러서 원하는 키로 설정합니다. (Ctrl + Alt + L)을 추천합니다^ㅇ^

바인딩을 마치고 사용을 한 번 해보겠습니다.

 

안 예쁜 코드

위처럼 안 예쁜 코드가 있을 때 예쁘게 만들어줄 부분을 선택하여~

 

Ctrl + Alt + L 키 입력

바인딩했던 키를 누르면~

 

예뻐진 코드

예쁘게 다듬어진 코드를 확인할 수 있습니다^^

 

3. Live Server

Live Server

Live Server는 실시간 미리보기 같은 기능입니다!

코드를 작성하고 로컬에서 확인이 가능하기 때문에 잘만 쓰면 유용하게 사용할 수 있습니다! 

위 화면에서 Live 

 

1. Go Live
2. 우클릭

설치가 끝나면 위와 같이 두가지 방법을 통해 Live Server을 활용할 수 있습니다!

 

1번 방법의 경우에 우측 하단의 Go Live 버튼을 클릭하여 실행할 수 있고,

2번 방법의 경우는 우클릭 -> Open with Live Server 를 통해 실행할 수 있습니다!

 

Live Server 활용

실행하게 되면 위와 같은 화면을 통해 작성한 코드를 실시간으로 미리보기 할 수 있습니다!

 

Live Server 종료

실행하게 되면 Go Live 버튼이 Port: 5500으로 바뀌게 되는데, 확인이 끝난 후 종료할 때 버튼을 클릭하여 종료할 수 있습니다!

 


이번 포스팅에서는 VSCode와 같이 사용하면 편리한 확장 기능들에 대해 알아보았습니다.

굳이 사용해야 하는 것은 아니지만, 사용하면 편리하고 삶의 질이 높아지기 때문에 유익한 것 같습니다.

다른 좋은 확장 기능들이 있다면 댓글로 공유하면 좋을 거 같습니다^ㅇ^

'Study > Front' 카테고리의 다른 글

[Vue.js] Vue Router 설정  (0) 2021.11.15
[Vue.js] Vue CLI로 Vue 프로젝트 생성하기  (0) 2021.11.14
VSCode 단축키  (0) 2021.03.02

친구가 블로그 이전에 대해서 고민하는 것을 보고 나 또한 솔깃했지만,

친구가 옮기지 않아 나도 옮기지 않았다. 

 

Git으로 블로그 관리를 하는 것이 잔디밭(Git의 Contribution)을 예쁘게 만들어주었기 때문에

포기하기까지 어려웠지만.. 그래도 이미지 삽입이나 전체적인 테마 등 티스토리의 장점에 더 끌렸던 것 같다.

 

또한, 나는 올린 게시글이 많지 않았기 때문에 이번 기회에 제대로 티스토리에서 시작해 보려 한다..

주된 내용은 간간히 올리는 코테, 언어 학습에 대한 정리, 일상(?) 정도가 될 것 같다.

 

남는 시간을 잘 활용하여 꾸준히 해본다는 마인드.

+ Recent posts