집 >데이터 베이스 >MySQL 튜토리얼 >mysql 쿼리 저장 프로시저
MySQL은 여러 프로그래밍 언어를 지원하는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 애플리케이션을 개발할 때 복잡한 SQL 쿼리 문을 실행해야 하는 경우가 종종 있습니다. 이때 MySQL 저장 프로시저를 사용하여 작업을 완료할 수 있습니다.
저장 프로시저는 매개 변수를 받아들이고 결과 집합을 반환할 수 있는 SQL 문의 모음입니다. SQL 문만 실행하는 것과 비교할 때 저장 프로시저를 사용하면 다음과 같은 이점이 있습니다.
몇 가지 일반적인 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 的所有信息。参数的类型可以是 IN
、OUT
或 INOUT
,分别表示输入、输出和输入/输出类型。
执行存储过程的语句为:
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
的记录。
该存储过程使用游标来遍历结果集,并输出每个记录的 id
和 name
字段值。
执行存储过程的语句为:
CALL get_persons_by_age(20);
这条语句将返回 person
表中所有 age
为 20 的记录,并输出它们的 id
和 name
rrreee
라는 파일을 생성합니다. 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))id
를 받아들이고 order
테이블의 id
에 해당하는 status
필드 값을 상태 변수. 🎜🎜저장 프로시저를 실행하는 문은 다음과 같습니다. 🎜🎜CALL get_status(1, @status);순서에 따라 <code>id를 출력합니다. code> 테이블 code>가 1인 레코드의 <code>status
필드 값입니다. 🎜🎜(3) 커서가 있는 저장 프로시저 생성🎜🎜CREATE PROCEDURE get_persons_by_age
(IN age INT) age
를 반환하고 age
가 age
와 동일한 person
테이블의 모든 레코드를 반환합니다. 🎜🎜이 저장 프로시저는 커서를 사용하여 결과 집합을 탐색하고 각 레코드의 id
및 name
필드 값을 출력합니다. 🎜🎜저장 프로시저를 실행하는 문은 다음과 같습니다. 🎜🎜CALL get_persons_by_age(20);🎜🎜이 문은 person
테이블에서 age
가 20인 모든 레코드를 반환합니다. id
및 name
값을 출력합니다. 🎜🎜간단히 말해서, MySQL 저장 프로시저를 사용하면 일부 복잡한 데이터베이스 작업을 쉽게 완료하고 애플리케이션의 효율성과 보안을 향상시킬 수 있습니다. 개발자는 최적의 성능과 유지 관리 가능성을 달성하기 위해 실제 요구 사항에 따라 적절한 저장 프로시저를 설계할 수 있습니다. 🎜위 내용은 mysql 쿼리 저장 프로시저의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!