320x100
320x100
저장 프로시저 (Stored Procedure)
- SQL Server에서 제공하는 프로그래밍 기능
- 데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스에 저장한 것으로 영구 저장 모듈이라고도 불림
- 쿼리문을 하나의 메서드 형식으로 만들고 어떠한 동작을 일괄적으로 처리하는 용도
- SQL에서는 SQL/PSM 기준으로 책정되어 있음
- 다른 프로그래밍 언어로 작성된 모듈을 호출하는 것으로 실형하는 외부 프로시저도 있음
프로시저의 장점
- 하나의 요청으로 여러 SQL문을 실행할 수 있음
- 네트워크 소요 시간을 줄일 수 있음
- 개발 업무를 구분해 개발 할 수 있음
- 보안 강화 및 SQL Injection 예방 가능
- 프로시저 암호화를 통해 원본 코드를 난독 처리 가능
- 프로시저는 처음 실행할 떄 컴파일 되며 이후 싱행에 다시 사용되는 실행 계획을 만드므로 처리시간이 줄어듦
프로시저의 단점
- 문자나 숫자 연산에 사용 시 처리 성능이 낮음
- 디버깅이 어려움
- DB 확장이 힘듦
※ 프로시저의 종류
- 저장 프로시저
- 이름이 정의되어 선언 시 DBMS에 저장되어 프로시저명 호출을 통해 언제든지 사용할 수 있는 프로시저
- 익명 프로시저
- 일회성으로 사용할 수 있는 이름이 없는 프로시저
nodeJS에서 프로시저 호출
프로시저 생성
- CREATE PROCEDURE 문으로 쿼리를 작성하고 이를 호출하여 프로시저를 생성
- 프로시저 안에는 여러 쿼리문이 들어갈 수 있음
- SLQ 쿼리문 사용하듯이 프로시저를 한 번 호출하여 결과를 받아오면 됨
SQL 패키지
- 연관성이 있는 서브 프로그램이나 변수, 상수, 커서, 사용자 정의 타입 등을 하나로 담은 모듈
- 선언부(스펙)과 본문(바디)으로 구성
- 선언부만 있어도 컴파일 한 뒤 저장할 수 있음
- 프로시저와 함수의 집합
※ 예시
: https://logical-code.tistory.com/61
패키지 선언부
CREATE OR REPLACE PACKAGE 패키지명
IS
TYPE 구문;
상수명 CONSTANT 상수타입;
예외명 EXCEPTION;
커서구문;
FUNCTION 함수명 (매개변수1 IN 매개변수1타입, 매개변수2 IN 매개변수2타입, ...)
RETURN 반환타입
PROCEDURE 프로시저명 (매개변수1 [IN, OUT, INOUT] 매개변수1타입, ...);
END 패키지명;
- AS BEGIN과 END 사이에 원하는 쿼리를 입력
- 수정은 ALTER PROCEDURE
패키지 본문
CREATE OR REPLACE PACKAGE BODY 패키지명
IS
상수명 CONSTANT 상수타입;
변수명 변수타입;
커서 정의 구문;
FUNCTION 함수명 (매개변수1 IN 매개변수1타입, 매개변수2 IN 매개변수2타입, ...) RETURN 반환타입;
IS
...
BEGIN
...
END 함수명;
PROCEDURE 프로시저명 (매개변수1 [IN, OUT, INOUT] 매개변수1타입, ...);
IS
...
BEGIN
...
END 프로시저명;
...
END 패키지명;
nodeJS 프로시저 호출 방법
- CREATE PROCEDURE로 프로시저를 생성한다.
- 생성된 프로시저를 호출하여 실행한다. CALL ${프로시저명} @파라미터 @파라미터
db.query("CALL 프로시저이름(?, ?,@변수명); SELECT @변수명", [
var1,
var2],
function(err, result) {
if (err) {
console.log(err);
}
else {
for (var i = 0; i < result.length; i++) {
console.log(result[i]); // 여기에 전달받은 결과가 표시됨 @변수명으로...
};
}
});
});
※프로시저를 만들면 어디에 생성되는 것인가?
- 프로시저를 생성하면 SQL 서버 자체에 저장된다
※ 프로시저 생성, 수정, 조회, 삭제에 대한 참조
프로시저 생성
CREATE PROCEDURE 프로시저명 (@파라미터, @파라미터)
AS
쿼리문
전체 프로시저 조회
select * from INFORMATION\_SCHEMA.ROUTINES
프로시저 삭제
DROP PROCEDURE [프로시저명]
300x250
728x90
'Database > MySQL' 카테고리의 다른 글
MariaDB 프로시저 및 함수 작성법 (SQL/PSM) (0) | 2022.05.05 |
---|---|
MariaDB 패키지 / 프로시저 / 함수 / 트리거 / PL/SQL과 SQL/PSM (0) | 2022.05.05 |
SQL - INDEX (인덱스) (0) | 2020.12.15 |
SQL - Constraint (제약조건) (0) | 2020.12.15 |
SQL - DML (Data Manipulation Language) (0) | 2020.12.15 |