프로시저 4
-
-
프로시저 (Stored Procedure) 개념미리 저장된 SQL 문들의 집합으로, 반복적으로 수행하는 작업을 재사용 가능하게 만들어줌. 파라미터를 받아 복잡한 작업을 수행할 수 있음. 주요 특징실행 방식EXEC 또는 sp_executesql로 호출입력/출력IN, OUT, INOUT 파라미터 가능 (OUTPUT 사용)트랜잭션트랜잭션 내에서 수행하거나, 내부에서 시작할 수 있음로직조건문, 반복문, 에러 처리 등 T-SQL의 모든 로직 사용 가능컴파일최초 실행 시 컴파일되어 캐시에 저장됨 장점복잡한 로직을 DB에 저장해서 비즈니스 로직 분산 가능재사용 가능하고, 보안성 향상 (권한 제어 가능)파라미터를 이용한 동적 쿼리 가능 단점유지보수가 어려워질 수 있음 (버전 관리 문제)함수보다 결과 반환이 자유롭지만,..
-
SELECT OBJECT_NAME(sm.object_id) AS ProcedureName, sm.definitionFROM sys.sql_modules smJOIN sys.objects o ON sm.object_id = o.object_idWHERE sm.definition LIKE '%찾을문구%' AND o.type = 'P'; -- P = 프로시저 AND o.type IN ('FN', 'IF', 'TF'); -- 'FN' 스칼라 함수, 'IF' 인라인테이블반환 함수, 'TF' 멀티문 테이블 반환함수 AND o.type = 'V'; -- V 뷰 AND o.type = 'TR'; -- TR 트리거
-
프로시저 Procedure 자주 사용하는 SQL 쿼리나 복잡한 비즈니스 로직을 하나의 이름으로 저장해두고 호출해서 실행 - MySQL은 웹 백엔드(PHP, Node.js 등)와 함께 쓰는 일이 많아서,로직을 DB에 넣기보단 애플리케이션 쪽에서 처리하는 경우가 많음- MsSQL에서는 비즈니스 로직을 DB에 넣는 문화가 강해서, 프로시저를 자주 활용 기본구조CREATE PROCEDURE 프로시저이름 @파라미터1 타입, @파라미터2 타입 OUTPUTASBEGIN -- SQL 로직END 프로시저 vs 함수 vs 트리거반환여러 개 가능 (OUT)1개 값없음호출 위치EXECSELECT 등 안에서이벤트 자동 실행트랜잭션OXX (제한적)복잡 로직O (조건/분기 등)제한적제한적