>  기사  >  데이터 베이스  >  MySQL 저장 프로시저 - 스마트 저장 프로시저 생성 및 저장 프로시저 확인

MySQL 저장 프로시저 - 스마트 저장 프로시저 생성 및 저장 프로시저 확인

巴扎黑
巴扎黑원래의
2017-05-18 11:01:431511검색

지능형 저장 프로시저 구축

지금까지 사용된 모든 저장 프로시저는 기본적으로 MySQL의 간단한 SELECT 문을 캡슐화합니다. 이는 모두 저장 프로시저의 유효한 예이지만 캡슐화된 문으로 직접 수행할 수 있는 작업을 수행합니다(테이블에 더 많은 항목을 가져오면 작업이 더 복잡해집니다). 저장 프로시저의 힘은 비즈니스 규칙과 지능형 처리가 포함될 때에만 분명해집니다.

이런 시나리오를 생각해 보세요. 이전과 동일한 주문 총액을 얻어야 하지만 총액에 판매세를 추가해야 하지만 특정 고객(아마도 해당 주에 있는 고객)에만 해당됩니다. 그런 다음 다음 작업을 수행해야 합니다.

1. 총액을 구합니다(이전과 동일).

2. 조건부로 총액에 판매세를 추가합니다. .총액을 반환합니다(세금 포함 또는 제외).

저장 프로시저의 전체 작업은 다음과 같습니다.

입력:

-- Name:ordertotal
-- Parmeters:onumber = order number
--           taxable = 0 if not taxable
--           ototal = order total variable
create procedure ordretotal(
in onumber int,
in taxable boolean,
out ototal decimal(8,2)
)comment 'obtain order total,optiomally adding tax'
begin
-- dexlare variable for total
declare total decimal(8,2);
-- delcare tax percentage
declare taxtate int default 6;
-- get the ordertotal
select sum(item_price*quantity)
from orderitems
where order_num = onumber into total;
-- is this taxable?
if taxable then
-- yes,so add taxrate to the total
select total+(total/100*taxrate) into total;
end if;
-- and finally,save to out variable
select total into ototal;
end;

분석: 이 저장 프로시저에는 많은 변경 사항이 있습니다. 먼저 주석을 추가합니다(--앞에 배치). 이는 저장 프로시저의 복잡성이 증가함에 따라 특히 중요합니다. 부울인 과세 매개변수가 추가되었습니다(세금이 인상될 경우 true, 그렇지 않으면 false). 저장 프로시저 본문에서는 DECLARE 문을 사용하여 두 개의 지역 변수가 정의됩니다. DECLARE에는 변수 이름과 데이터 유형을 지정해야 하며 선택적 기본값도 지원합니다(이 예에서 세율 기본값은 6%로 설정됨). SELECT 문은 결과가 ototal 대신 total(로컬 변수)에 저장되도록 변경되었습니다. IF 문은 과세 대상이 true인지 확인하고, 그렇다면 다른 SELECT 문을 사용하여 지역 변수 total에 판매세를 추가합니다. 마지막으로 다른 SELECT 문을 사용하여 총계(판매세가 증가할 수도 있고 증가하지 않을 수도 있음)를 ototal 에 저장합니다.

COMMENT 키워드 이 예의 저장 프로시저는 CREATE PROCEDURE 문의 COMMENT 값을 포함합니다. 필수는 아니지만 제공되면 SHOW PROCEDURE STATUS의 결과에 표시됩니다. 이는 분명히 더욱 발전되고 강력한 저장 프로시저입니다. 테스트하려면 다음 두 문을 사용하세요.

입력:

call ordertotal(20005,0,@total);
select @total;

출력:

MySQL 저장 프로시저 - 스마트 저장 프로시저 생성 및 저장 프로시저 확인입력:

call ordertotal(20005,1,@total);
select @total;

출력:

MySQL 저장 프로시저 - 스마트 저장 프로시저 생성 및 저장 프로시저 확인 분석: BOOLEAN 값을 1로 지정하면 true, 0으로 지정하면 false(실제로 0이 아닌 값은 true로 간주되며 0만 true) 거짓으로 간주됩니다). 중간 인수에 0 또는 1을 지정하여 조건에 따라 판매세를 주문 총액에 추가할 수 있습니다.

IF 문 이 예에서는 MySQL의 IF 문에 대한 기본적인 사용법을 보여줍니다. IF 문은 ELSEIF 및 ELSE 절도 지원합니다(전자는 THEN 절도 사용하고 후자는 사용하지 않음). 다음 장에서는 IF(및 기타 흐름 제어 문)의 다른 용도를 살펴보겠습니다.


저장 프로시저 검사

저장 프로시저를 생성하는 데 사용된 CREATE 문을 표시하려면 SHOW를 사용하세요. CREATE

PROCEDURE 문:

입력:

show create procedure ordetotal;

저장 프로시저를 언제, 누가 생성했는지 등의 세부 정보를 포함한 목록을 가져오려면 SHOW PROCEDURE STATUS를 사용하세요.

프로세스 상태 결과 제한 SHOW PROCEDURE STATUS 모든 저장 프로시저를 나열합니다. 출력을 제한하려면 LIKE를 사용하여 필터 패턴을 지정할 수 있습니다. 예:

'ordertotal'과 같은 절차 상태 표시;

위 내용은 MySQL 저장 프로시저 - 스마트 저장 프로시저 생성 및 저장 프로시저 확인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.