MSSQL

MSSQL - 저장 프로시저 (PROCEDURE)

깐까망 2024. 4. 8. 18:08
728x90
반응형
SMALL

▶ 저장프로시저

- 실무에서는 프로그램에서 만들어 놓은 SQL문을 저장해 놓고, 필요할 때마다 호출해서 사용하는 방식으로 프로그램을 만든다.

 

저장 프로시저는 이러한 방식이 가능하도록하는 각 DBMS 에서 제공하는 프로그래밍 기능이다.

Oracle, MySQL 등 대부분의 DBMS 에서 제공하고 있는데, 오늘은 SQL Server에서 제공하는 저장 프로시저에 대해 정리할 생각이다.

 

저장 프로시저는 쿼리문들의 집합으로, 어떤 동작을 여러쿼리를 거쳐서 일괄적으로 처리할 때 사용한다.

 

여기서 이런 질문을 할 수도 있다.

 

"그럼 그냥 SQL 문 쓰면 되지 , 굳이 SP를 만들어 써야하나?"

 

저장 프로시저를 실무에서 사용하는 이유가 있다.

 

먼저, SQL Server의 성능을 향상 시킬 수 있다.

저장 프로시저를 처음에 실행하면 최적화, 컴파일 단계를 거쳐 그 결과가 캐시(메모리)에 저장되게 되는데, 이 후에 해당 SP를 실행하게 되면 캐시(메모리)에 있는 것을 가져와서 사용하므로 실행속도가 빨라지게 된다.

그렇기 때문에 일반 쿼리를 반복해서 실행하는 것보다 SP 를 사용하는게  성능적인 측면에서 좋다.

 

두번째, 유지보수 및 재활용 측면에서 좋다.

C#, Java등으로 만들어진 응용프로그램에서 직접 SQL문을 호출하지 않고 저장 프로시저의 이름을 호출하도록 설정하여 사용하는 경우가 많은데, 이때 개발자는 수정요건이 발생할때 코드 내 SQL문을 건드리는게 아니라 SP 파일만 수정하면 되기 때문에 유지보수 측면에서 유리해진다. 

또한 한번 저장 프로시저를 생성해 놓으면, 언제든 실행이 가능하기 때문에 재활용 측면에서 매우 좋다.

 

셋째, 보안을 강화할 수 있다.

사용자별로 테이블에 권한을 주는게 아닌 저장 프로시저에만 접근 권한을 주는 방식으로 보안을 강화할 수 있다.

실제 테이블에 접근하여 다양한 조작을 하는 것은 위험하기 때문에 실무에서는 실제로 개발자에게는 sp권한만 주는 방식을 많이 사용한다.

 

마지막으로, 네트워크의 부하를 줄일 수 있다.

클라이언트에서 서버로 쿼리의 모든 텍스트가 전송될 경우 네트워크에는 큰 부하가 발생하게 된다. 하지만 저장 프로시저를 이용한다면 저장프로시저의 이름, 매개변수 등 몇글자만 전송하면 되기 때문에 부하를 크게 줄일 수 있다.

 

간단하게 설명하면 위에 글과 같습니다. 좀더 자세히 알고 싶으면 아래 링크를 참조하시면 됩니다.

https://devkingdom.tistory.com/323

 

[MSSQL] 저장 프로시저 (Stored Procedure) 란?

실무에서는 프로그램에서 만들어 놓은 SQL문을 저장해 놓고, 필요할 때마다 호출해서 사용하는 방식으로 프로그램을 만든다. 저장 프로시저 (Stroed Procedure) 저장 프로시저는 이러한 방식이 가능

devkingdom.tistory.com

 

--프로시저 기본 형태--
CREATE PROC 프로시저명
(
  파라미터 데이터형태
          .
          .
          .
)
AS
BEGIN
 쿼리문
END

 

. 기본적인 형태가 위와 같은형식입니다.

. 파라미터는 조건식에 값을 넣기 위해 받아오는 값입니다. 크기는 테이블에 있는 컬럼의 데이터형태와 크기를 맞춰서 선언을 하여 사용을 해야합니다.

 

아래의 링크에서 데이터를 참고하여 만들었습니다.

https://alstn4973.tistory.com/151

 

MSSQL - INSERT 삽입

▶ INSERT 문의 기본 . DML의 종류의 하나로 INSERT 삽입으로 분류가 됩니다. . 데이터베이스에 데이터를 입력하는 명령어입니다. 가장 기본적인 기능이고 굉장히 많이 쓰임으로 매우 중요합니다. - IN

alstn4973.tistory.com

CREATE PROC SP_EMP
(
 @EMP_NO INT
 )
AS  
  
BEGIN  
  SELECT * FROM EMP WHERE empno = @EMP_NO
END

 

. 예시를 만들어 보여드리면 WHERE 조건식에 파라미터가 들어갑니다.

. SP_EMP를 만들어 검색을 하면

EXEC SP_EMP @EMP_NO = 20;

 

728x90
반응형
LIST

'MSSQL' 카테고리의 다른 글

MSSQL - SELECT INSERT 다른 테이블에 복사하기  (0) 2024.04.23
MSSQL - 서브쿼리  (0) 2024.04.15
MSSQL - 조건문 (CASE WHEN, IF) 함수 사용법 & 예제  (0) 2024.04.04
MSSQL - IS NULL IS NOT NULL  (0) 2024.04.03
MSSQL - ROWNUM, TOP()  (0) 2024.04.02