SQL 저장 프로시저 개요
Feel Free to comment down below you find any mistake or suggestion to improve 😊
시작하자
뭐 ? 저장 프로 시저입니까?
In in a simple term, it’s just the bunch of SQL instructions (queries) run together, just like a function in other programming languages.
A stored procedure is a prepared SQL code that you can save, so the code can be reused over and over again. So if you have an SQL query that you write over and over again, save it as a stored procedure, and then just call it to execute it. You can also pass parameters to a stored procedure so that the stored procedure can act based on the parameter value(s) that is passed. – W3School
언제 ? 그것을 사용하려면?
예를 들어, 순서대로 실행해야 하는 일련의 지침이 있고 무언가를 놓치면 문제가 될 수 있습니다. 단일 쿼리를 실행하는 것은 지루할 것입니다. 그러나 일상적인 작업을 위한 저장 프로시저를 만들면 단일 저장 프로시저 호출로 쉽게 실행할 수 있습니다.
어디에 ? 그것을 사용하려면?
주기적인 데이터 처리가 필요합니다.
왜요 ? 그것을 사용하려면?
Below query will run on MariaDB MYSQL but for other SQL, some commands may differ.
쿼리를 받아보자!
아래 예에서는 아래 제품 테이블을 고려합니다.
ID
이름
스쿠
수량
상태
1
사과
10000034
50
1
2
팬
10000032
10
0
삼
데스크탑
10000031
1
1
4
생쥐
10000030
23
1
5
그래픽 카드
10000021
56
!
구분자 란 무엇입니까? 그것을 변경하는 방법?
A _delimiter _is a sequence of one or more characters for specifying the boundary between separate, independent regions in plain text or other data streams – wikipedia.org
SQL 쿼리를 작성할 때 다음 예와 같이 세미콜론(;)을 사용하여 두 문을 구분합니다.
SELECT name FROM Product;
SELECT sku FROM Product;
SQL Default의 경우 Delimiter/End of SQL 쿼리는 세미콜론(;)이지만 기본 구분자를 달러($)로 변경하려면 다음 예와 같이:
DELIMITER $$
구분 문자는//또는 $$와 같은 단일 또는 이중 문자로 구성될 수 있지만 백슬래시는 시퀀스를 이스케이프하므로 사용하지 않아야 합니다.
명령줄에서 저장 프로시저를 만들 때 일반 구분 기호와 BEGIN END 블록 내부의 구분 기호를 구분해야 합니다. 더 잘 이해하려면 다음 예를 고려하십시오.
CREATE PROCEDURE PROCEDURE_NAME()
BEGIN
SELECT name FROM customer;
END;
명령줄에 위의 코드를 한 줄씩 입력하면 MYSQL 클라이언트는 세미콜론(;)을 명령문의 끝으로 해석하고 예외를 throw합니다. 그래서 임시로 기본값이 아닌 구분자를 변경합니다.
🎉자신만의 저장 프로시저를 작성하는 방법🎉
기본 구분 기호를 변경하여 시작합니다. 모든 SQL 문은 아래와 같이 BEGIN 및 END 키워드로 래핑됩니다.
DELIMITER $$
CREATE PROCEDURE PROCEDURE_NAME()
BEGIN
/* Procedure code */
END $$
DELIMITER ;
동일한 이름의 저장 프로시저가 이미 존재하는 경우 예외가 발생합니다.
procedure with the same name already exists
저장 프로시저를 실행하려면 SQL 쿼리 아래에서 실행
CALL PROCEDURE_NAME();
저장 프로시저 삭제
저장 프로시저가 없으면 예외가 발생합니다. 이를 방지하기 위해 조건부 검사
[IF EXISTS ]
절을 추가할 수 있습니다.DROP PROCEDURE PROCEDURE_NAME;
/* OR */
DROP PROCEDURE IF EXISTS PROCEDURE_NAME;
저장 프로시저 목록 가져오기:
SHOW PROCEDURE STATUS;
Output : –
Db: testSP
Name: udpateStatus
Type: PROCEDURE
Definer: root@%
Modified: 2020-02-24 13:17:58
Created: 2020-02-24 13:17:58
Security_type: DEFINER
Comment:
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
결과를 필터링하려면 아래와 같이 WHERE 절을 추가하기만 하면 됩니다.
SHOW PROCEDURE STATUS WHERE Db= DATABASE_NAME;
결론
다음 포스트에서는 변수, 조건, 루프, 커서와 같은 저장 프로시저에 대해 자세히 설명하겠습니다.
Reference
이 문제에 관하여(SQL 저장 프로시저 개요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swarup260/overview-of-sql-stored-procedures-part-1--2n2o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)