예제와 함께 mysql 저장 프로시저에 대한 자세한 설명

王林
풀어 주다: 2020-01-22 19:41:25
앞으로
2837명이 탐색했습니다.

예제와 함께 mysql 저장 프로시저에 대한 자세한 설명

mysql 저장 프로시저란 무엇인가요?

저장 프로시저는 서버에 저장되어 있는 결합된 SQL 문으로, 데이터베이스에 컴파일, 생성 및 저장됩니다. 사용자는 저장 프로시저의 이름을 통해 이를 호출하고 실행할 수 있습니다. 저장 프로시저의 핵심 아이디어는 데이터베이스의 SQL 언어 수준에서의 캡슐화와 재사용성입니다. 저장 프로시저를 사용하면 응용 시스템의 비즈니스 복잡성을 줄일 수 있지만, 데이터베이스 서버 시스템의 부하가 증가하므로 사용 시 포괄적인 비즈니스 고려 사항을 고려해야 합니다.

기본 구문 형식

CREATE PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
로그인 후 복사

(무료 학습 영상 튜토리얼 공유: mysql 영상 튜토리얼)

예 1: 소비 할인 계산

-- 创建存储过程
DROP PROCEDURE IF EXISTS p01_discount ;
CREATE PROCEDURE p01_discount(IN consume NUMERIC(5,2),OUT payfee NUMERIC(5,2))BEGIN
    -- 判断收费方式
    IF(consume>100.00 AND consume<=300.00) THEN
        SET payfee=consume*0.8;
    ELSEIF (consume>300.00) THEN 
        SET payfee=consume*0.6;
    ELSE 
        SET payfee = consume;    END IF;    SELECT payfee AS result;END ;
        -- 调用存储过程
        CALL p01_discount(100.0,@discount);
로그인 후 복사

예 2: 동안..데이터 쓰기

조각 제공 data Table

CREATE TABLE `t03_proced` (  
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT &#39;主键ID&#39;,  
`temp_name` varchar(20) DEFAULT NULL COMMENT &#39;名称&#39;,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=&#39;触发器写数据&#39;;
로그인 후 복사

Stored program

은 전달된 매개변수를 기반으로 t03_proced 테이블에 기록되는 데이터 항목 수를 결정합니다.

DROP PROCEDURE IF EXISTS p02_batch_add ;
CREATE PROCEDURE p02_batch_add(IN count INT(11))BEGIN
    DECLARE temp int default 0;
    WHILE temp < count DO
        INSERT INTO t03_proced(temp_name) VALUES (&#39;pro_name&#39;);        
        SET temp = temp+1 ;   
         END WHILE;
         END ;
         -- 测试:写入10条数据call p02_batch_add(10);
로그인 후 복사

Notes

1. 비즈니스 시나리오

실제 개발에서 저장 프로시저를 적용하는 것은 일반적으로 애플리케이션 수준에서 개발되므로 더 잘 관리하고 유지 관리하며 최적화할 수 있습니다.

2. 실행 속도

단일 테이블 데이터 쓰기의 경우 애플리케이션 쓰기 또는 데이터베이스 연결 클라이언트 쓰기를 기반으로 하면 저장 프로시저의 쓰기 속도보다 쓰기 속도가 훨씬 느려집니다. 네트워크 통신 오버헤드, 파싱 오버헤드, 옵티마이저 오버헤드 등

추천 관련 기사 및 튜토리얼: mysql 튜토리얼

위 내용은 예제와 함께 mysql 저장 프로시저에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿