# Stored Procedure

MariaDB에서의 Stored Procedure
Spring Boot 3.1.1 MariaDB 11.0.2 상황 >Spring Boot에서는 연결된 DB를 초기화하는 SQL문을 작성하여 파일로 저장하고, application.properties 또는 application.yml 파일에서 설정값을 세팅하면 Spring Boot Application을 실행할 때마다 해당 SQL문을 자동 실행한다. 만약 SQL을 자동 실행하게 설정해놓았다면, 프로젝트의 resources/ 에 존재하는 data.sql 또는 schema.sql이 존재하는지 확인하고 존재한다면 어플리케이션 실행시 해당 SQL파일들을 실행한다. 다음과 같이 설정되어 있다면, Spring Boot Application 실행시마다 some_routine 테이블에 8개의 데이터가 삽입된다. > application.properties data.sql >여기서 FK로 관계를 맺는 테이블간에 row를 Spring Boot Application 실

[CS-데이터베이스]저장 프로시저
저장 프로시저란, SQL Server에서 제공되는 프로그래밍 기능. 쿼리문의 집합으로서, 어떠한 동작을 일괄 처리하는 용도로 사용된다. 즉, 인자 값만 전달하여 동일한 로직의 복잡한 쿼리문을 하나의 함수로 실행할 수 있도록 한다. 예시 일반적인 쿼리문 저장 프로시저 저장 프로시저의 동작방식 📍 일반 SQL 동작방식 해당 쿼리를 예시로 처음 실행한다고 가정하자. 순서 구문자체에 오류가 없는지 분석, 오타가 있다면 오류메시지 반환 개체 이름 확인은 USER라는 이름의 테이블이 현재 DB에 있는지 확인을 하고, 있다면 그 안에 ID라는 컬럼이 있는지 확인 현재 접근한 사용자가 USER테이블에 접근 권한이 있는지 확인 최적

Database - Stored PROCEDURE(저장 프로시저)
저장 프로시저란? >DB 내부에 저장된 일련의 SQL 명령문들을 하나의 함수처럼 실행하기 위한 쿼리의 집합 즉, DB에 대한 작업을 정리한 절차를 RDBMS(관계형 데이터 베이스 관리 시스템)에 저장한 쿼리 집합이다. SQL Server에서 제고오디는 프로그래밍 기능. 쿼리문의 집합 어떠한 동작을 일괄 처리하기 위한 용도로 사용 자주 사용되는 일반적인 쿼리를 모듈화시켜 필요할 때마다 호출 테이블처럼 각 데이터베이스 내부에 저장 프로시저를 만들어두면, 애플리케이션에서 여러 상황에 따라 해당 쿼리문이 필요할 때 인자 값만 전달하여 쉽게 원하는 결과물을 받아낼 수 있다. 일반 쿼리문 VS 저장 프로시저 일반 쿼리문 작동 방식 , SELECT(레코드셋의 데이터)를 활용함. > 주의점 @@ERROR, @@ROWCOUNT 값 체크 시 PRINT명령 수행 시 주의 단, SELECT는 다른 응용프로그램이나 WEB에서 오류발생 가능성이 높

절차형 SQL (Stored Procedure, Stored Function, Trigger)
절차형 SQL? : 일반적인 개발 언어처럼 SQL문들을 순서대로 실행할 수 있게하는 SQL 단일 SQL문으로는 처리하기 어려운 작업을 수행함 자주 사용하는 SQL문들을 저장하여 필요시에 재활용할 수 있으므로, 반복적인 작업에 유리함 종류 : Stored Procedure, Stored Function, Trigger 오류 및 경고 메시지가 상세히 출력되지 않으므로 특정 명령어를 사용하여 확인 : SHOW [ERROS|WARNINGS]; 문법 변수 저장 : [값] INTO [변수명] 변수 선언 : DECLARE [변수명] [변수 타입]; OR REPLACE란? : 동일한 절차형 SQL 이름이 이미 존재하는 경우, 기존의 절차형 SQL를 덮어씀 DELIMITER란? : 절차형 SQL은 내부에서 세미콜론(;)을 사용하므로 절차형 SQL 구문을 구분하기 어려움. 따라서, 다른 문자(
PostgreSQL로 프로시저와 트리거 만들기
PL/pgSQL을 이용해 Stroed Procedure 만들기 $$ 함수 정의의 시작과 끝을 알려주는 기호 PL/pgSQL 언오를 사용하므로 항상 plpgsql로 사용 > Trigger Function(Stored Function) 만들기 OLD : 트리거 실행 이전 값, NEW : 트리거 실행 이후 값 > Trigger 만들기 $$ 함수 정의의 시작과 끝을 알려주는 기호 PL/pgSQL 언오를 사용하므로 항상 plpgsql로 사용
TIL 2021.06.02 [스토어드 프로시져]
SQL의 기본 명려은 선언적 명령이다 → How가 아니라 What에 해당한다. 디비에서 절차적 명령을 수행하기 위해서는 스토어드 프로그램을 사용해야 한다. 스토어드 프로그램 자바 코드 짜듯이 메서드를 짜서 디비에 저장한다고 생각하면 된다. 장점 디비에 프로그램을 저장하기 때문에 응용 프로그램의 성능에 유리하다! 네트워크 트래픽이 감소한다! → 여러개 호출할 걸 한번에 호출할 수 있으니까! 정확한 인풋과 아웃풋으로 보안성 향상! 개발 업무의 구분! 단점 유지 보수가 매우 어렵다! → 코드가 디비에 있기 때문에! 깃에서 관리가 쉽지 않다 → DBA가 깃을 안쓴다! 문제가 생겼을때 rollback은? → 어렵다. 명령 자체의 성능 감소 명령 자체의 성능 감소는 마이너한 단점이지만 위 3개는 큰 단점이다. 사용하는 곳? 게임분야에서는 많이 사용한다고 하지만, 다른 분야에서는 케바케인데 사용이 줄어들고 있다고 한다. 스토어드 펑션 VS 스토어드 프로

[우아콘2020] 배달의민족 마이크로서비스 여행기 정리
배민 마이크로서비스 여행기 정리 김영한 배민서비스개발팀 검색할 내용은 택스트로 입력함 배민 서비스 5년간의 역사 2015년 스토어드 프로시저 방식 사용 테이블 700개, 스토어드 프로시저 4000개, 거대한 모놀리틱 시스템 
저장프로시져 비지니스 로직을 처리하는 모듈을 작성하여 컴파일하고 해당 기능이 필요한 곳에서 함수 처럼 호출할 수 있는 단위 컴파일된 프로시저는 캐시메모리에 저장되어 처리속도가 빠르고, 네트워크 트래픽 감소 효과 사용자에게 모듈을 감추기 때문에 보안확보 프로시져는 반환값이 없음 java에서 void타입 메서드다.. 사용형식 실행문 사용형식 예시) 회원테이블에서 'd001'회원의 회원번호를 입력받아 회원명,주소,직업을 출력하는 프로시져 작성 **예시)상품테이블에서 분류코드 'P301'에 속한 상품의 상품명, 분류코드, > 매입가격, 매출가격을 출력하는 프로시져를 작성하시오.** 그래서 프로시져에 반복해서 값을 집어넣음 
Oracle - 저장프로시져
참고 2020-09-01-02)저장프로시져.sql 2020-09-01-03)저장프로시져2.sql 저장프로시져 (= 프로시져) 절차형 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어 프로시져: 하나의 결과를 도출하기 위한 코드의 집합 비지니스 로직을 처리하는 모듈을 작성하여 컴파일하고 해당 기능이 필요한 곳에서 함수처럼 호출 할 수 있는 단위 컴파일된 프로시져는 캐시메모리에 저장되어 처리 속도가 빠르고, 네트워크의 트래픽 감소 효과 사용자에게 내부 모듈을 감추기 때문에 보안확보 프로시져는 반환값이 없으나, 매개변수를 통해서 빼낼 수 있다. 용도: 시스템의 일일 마감 작업, 일괄(Batch) 작업 오라클 - 프로시져 : 자바 - void 메서드 오라클 - function: 자바 - return 있는 메서드 사용형식 생성 ![](https://images.velog.io/images/godk