>데이터 베이스 >MySQL 튜토리얼 >mysql 쿼리 저장 프로시저

mysql 쿼리 저장 프로시저

PHPz
PHPz원래의
2023-05-14 09:54:07905검색

MySQL은 여러 프로그래밍 언어를 지원하는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 애플리케이션을 개발할 때 복잡한 SQL 쿼리 문을 실행해야 하는 경우가 종종 있습니다. 이때 MySQL 저장 프로시저를 사용하여 작업을 완료할 수 있습니다.

저장 프로시저는 매개 변수를 받아들이고 결과 집합을 반환할 수 있는 SQL 문의 모음입니다. SQL 문만 실행하는 것과 비교할 때 저장 프로시저를 사용하면 다음과 같은 이점이 있습니다.

  1. 애플리케이션 코드를 단순화하여 프로그램을 더 쉽게 유지 관리하고 업데이트할 수 있습니다.
  2. 저장 프로시저는 SQL 문만 실행하는 것보다 빠르게 실행됩니다.
  3. 저장 프로시저는 데이터 일관성과 보안을 보장할 수 있습니다.

몇 가지 일반적인 MySQL 저장 프로시저 예시를 살펴보겠습니다.

(1) 간단한 저장 프로시저 만들기

CREATE PROCEDURE get_person(IN id INT)
BEGINget_person(IN id INT)
BEGIN

SELECT * FROM person WHERE id = id;

END;

上面的代码创建了一个名为 get_person 的存储过程,带有一个输入参数 id,返回 person 表中指定 id 的所有信息。参数的类型可以是 INOUTINOUT,分别表示输入、输出和输入/输出类型。

执行存储过程的语句为:

CALL get_person(1);

这条语句将返回 person 表中 id 为 1 的记录。

(2) 创建一个带有输出参数的存储过程

CREATE PROCEDURE get_status(IN id INT, OUT status VARCHAR(50))
BEGIN

SELECT status FROM order WHERE id = id INTO status;

END;

这个存储过程接受一个输入参数 id,并将 order 表中 id 对应的 status 字段值返回到 status 变量中。

执行存储过程的语句为:

CALL get_status(1, @status);
SELECT @status;

这条语句将输出 order 表中 id 为 1 的记录的 status 字段值。

(3) 创建一个带有游标的存储过程

CREATE PROCEDURE get_persons_by_age(IN age INT)
BEGIN

DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE pid INT;
DECLARE pname VARCHAR(50);
DECLARE persons CURSOR FOR SELECT id, name FROM person WHERE age = age;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN persons;
repeat_row: LOOP
    FETCH persons INTO pid, pname;
    IF done THEN
        LEAVE repeat_row;
    END IF;
    SELECT pid, pname;
END LOOP;
CLOSE persons;

END;

这个存储过程接受一个输入参数 age,并返回 person 表中所有 age 等于 age 的记录。

该存储过程使用游标来遍历结果集,并输出每个记录的 idname 字段值。

执行存储过程的语句为:

CALL get_persons_by_age(20);

这条语句将返回 person 表中所有 age 为 20 的记录,并输出它们的 idnamerrreee

END;

위 코드는 라는 파일을 생성합니다. get_person의 프로시저는 입력 매개변수 id를 취하고 person 테이블에 지정된 ID의 모든 정보를 반환합니다. 매개변수 유형은 각각 입력, 출력 및 입력/출력 유형을 나타내는 IN, OUT 또는 INOUT일 수 있습니다. 🎜🎜저장 프로시저를 실행하는 문은 다음과 같습니다. 🎜🎜CALL get_person(1);🎜🎜이 문은 person 테이블에 id 1인 레코드를 반환합니다. 🎜🎜(2) 출력 매개변수를 사용하여 저장 프로시저 생성🎜🎜CREATE PROCEDURE get_status(IN id INT, OUT status VARCHAR(50))
BEGIN🎜rrreee🎜END;🎜🎜this 저장된 프로시저 프로시저는 입력 매개변수 id를 받아들이고 order 테이블의 id에 해당하는 status 필드 값을 상태 변수. 🎜🎜저장 프로시저를 실행하는 문은 다음과 같습니다. 🎜🎜CALL get_status(1, @status);
SELECT @status;🎜🎜이 문은 순서에 따라 <code>id를 출력합니다. code> 테이블 code>가 1인 레코드의 <code>status 필드 값입니다. 🎜🎜(3) 커서가 있는 저장 프로시저 생성🎜🎜CREATE PROCEDURE get_persons_by_age(IN age INT)
BEGIN🎜rrreee🎜END;🎜🎜이 저장 프로시저는 입력 매개변수를 허용합니다 age를 반환하고 ageage와 동일한 person 테이블의 모든 레코드를 반환합니다. 🎜🎜이 저장 프로시저는 커서를 사용하여 결과 집합을 탐색하고 각 레코드의 idname 필드 값을 출력합니다. 🎜🎜저장 프로시저를 실행하는 문은 다음과 같습니다. 🎜🎜CALL get_persons_by_age(20);🎜🎜이 문은 person 테이블에서 age가 20인 모든 레코드를 반환합니다. idname 값을 출력합니다. 🎜🎜간단히 말해서, MySQL 저장 프로시저를 사용하면 일부 복잡한 데이터베이스 작업을 쉽게 완료하고 애플리케이션의 효율성과 보안을 향상시킬 수 있습니다. 개발자는 최적의 성능과 유지 관리 가능성을 달성하기 위해 실제 요구 사항에 따라 적절한 저장 프로시저를 설계할 수 있습니다. 🎜

위 내용은 mysql 쿼리 저장 프로시저의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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