저장 프로시저 삭제
저장 프로시저가 생성되면 서버에 저장되어 삭제될 때까지 사용됩니다. 삭제 명령(21장에 소개된 명령문과 유사)은 서버에서 저장 프로시저를 삭제합니다. 새로 생성된 저장 프로시저를 삭제하려면 다음 문을 사용할 수 있습니다.
입력:
drop procedure productpricing;
분석: 이 문은 새로 생성된 저장 프로시저를 삭제합니다. 다음 ()은 사용하지 않고 저장프로시저 이름만 부여하므로 주의하시기 바랍니다.
존재하는 경우에만 삭제 지정된 프로시저가 존재하지 않으면 DROP PROCEDURE에서 오류가 발생합니다. 프로시저가 존재하고 이를 삭제하려는 경우(프로시저가 존재하지 않는 경우 오류를 생성하지 않고) DROP PROCEDURE IF EXISTS를 사용하십시오.
매개변수 사용
productpricing은 단순히 SELECT 문 결과를 표시하는 간단한 저장 프로시저입니다. 일반적으로 저장 프로시저는 결과를 표시하지 않지만 사용자가 지정한 변수에 결과를 반환합니다.
변수 데이터를 임시로 저장하는 데 사용되는 메모리의 특정 위치입니다. 다음은 productpricing의 수정된 버전입니다(먼저 이 저장 프로시저를 삭제하지 않으면 다시 생성할 수 없음).
입력:
create procedure productpricing( out pl decimal(8,2), out ph decimal(8,2), out pa decimal(8,2) ) begin select min(prod_price) into pl from products; select max(prod_price) into ph from products; select avg(prod_price) into pa from products; end;
분석: 이 저장 프로시저는 3개의 매개 변수를 허용합니다: pl store product 최저 가격, ph는 제품의 최고 가격을 저장하고 pa는 제품의 평균 가격을 저장합니다. 각 인수에는 지정된 유형이 있어야 하며 여기서는 소수 값이 사용됩니다. OUT 키워드는 해당 매개변수가 저장 프로시저에서 값을 전달하는 데 사용됨을 나타냅니다(호출자에게 반환). MySQL은 IN(저장 프로시저로 전달됨), OUT(여기서 사용된 저장 프로시저에서 전달됨) 및 INOUT(저장 프로시저로 전달되고 저장 프로시저에서 전달됨) 유형의 매개변수를 지원합니다. 저장 프로시저의 코드는 BEGIN 및 END 문 내에 위치하며, 앞에서 본 것처럼 값을 검색한 다음 INTO 키워드를 지정하여 해당 변수에 저장하는 일련의 SELECT 문입니다.
매개변수의 데이터 유형 저장 프로시저의 매개변수에 허용되는 데이터 유형은 테이블에 사용되는 데이터 유형과 동일합니다. 부록 D에는 이러한 유형이 나열되어 있습니다.
레코드 세트는 허용되는 유형이 아니므로 단일 매개변수를 통해 여러 행과 열을 반환할 수 없습니다. 이것이 바로 이전 예에서 3개의 매개변수(및 3개의 SELECT 문)를 사용하는 이유입니다. 이 수정된 저장 프로시저를 호출하려면 다음과 같이 3개의 변수 이름을 지정해야 합니다.
입력:
call productpricing(@price low, @pricehigh, @priceaverage);
분석: 이 저장 프로시저에는 3개의 매개변수가 필요하므로 정확히 3개의 매개변수를 전달해야 합니다. , 더도 말고 덜도 말고. 따라서 이 CALL 문은 3개의 매개변수를 제공합니다. 이는 저장 프로시저가 결과를 보유할 3개 변수의 이름입니다.
변수 이름 모든 MySQL 변수는 @으로 시작해야 합니다.
호출되면 이 문은 어떤 데이터도 표시하지 않습니다. 나중에 표시할 수 있는(또는 다른 처리에 사용할 수 있는) 변수를 반환합니다. 검색된 상품의 평균 가격을 표시하려면 다음과 같이 진행하세요.
입력:
select @priceaverage;
출력:
3개의 값을 얻으려면 다음 명령문을 사용하십시오.
입력:
select @pricehigh,@pricrlow,@priceaverage;
출력:
다음은 또 다른 예입니다. , 이번에는 IN 및 OUT 매개변수를 사용합니다. ordertotal은 주문 번호
를 승인하고 주문 총액을 반환합니다.
입력:
create procedure ordertotal( in onumber int, out ototal decimal(8,2) ) begin select sum(item_price*quantity) from orderitems where order_num = onumber into ototal; end;
분석: 주문 번호가 저장된 항목으로 전달되므로 onumber는 IN으로 정의됩니다. 절차. 총계는 저장 프로시저에서 반환되므로 ototal은 OUT으로 정의됩니다. SELECT 문은 이 두 매개변수를 사용하고, WHERE 절은 onumber를 사용하여 올바른 행을 선택하며, INTO는 ototal을 사용하여 계산된 합계를 저장합니다.
이 새 저장 프로시저를 호출하려면 다음 문을 사용할 수 있습니다.
입력:
call ordertotal(20005,@total);
분석: 두 매개변수가 ordertotal에 전달되어야 합니다. order number 에서 두 번째 매개변수는 계산된 총계를 포함하는 변수의 이름입니다. 이 합계를 표시하려면 다음과 같이 진행하세요.
입력:
select @total;
출력:
분석: @ ordertotal의 CALL 문으로 total이 채워지고, SELECT에 포함된 값이 표시됩니다. 다른 주문의 전체 표시를 얻으려면 저장 프로시저를 다시 호출한 다음 변수를 다시 표시해야 합니다.
입력:
call ordertotal(20009,@total); select @total;
위 내용은 MySQL 저장 프로시저 삭제 작업에 대한 자세한 설명과 파라미터 사용 예시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!