MySQL 저장 프로시저의 결과 세트 논의

PHPz
풀어 주다: 2023-04-21 13:38:34
원래의
520명이 탐색했습니다.

MySQL은 세계에서 가장 인기 있는 오픈 소스 SQL 데이터베이스 관리 시스템으로 안정성, 성능 및 신뢰성으로 인해 기업 및 개인 용도로 선호되는 데이터베이스입니다. MySQL은 사용자가 MySQL에서 SQL 문을 이용하여 프로그램을 작성할 수 있도록 하는 저장 프로시저(Stored Procedure) 방식을 제공하며, 이러한 프로그램도 다른 프로그램처럼 호출할 수 있습니다. MySQL 저장 프로시저에는 네트워크 전송량 감소, 데이터 검색 가속화, 성능 향상 등 많은 이점이 있습니다. 이 기사에서는 MySQL 저장 프로시저의 결과 세트에 대해 설명합니다.

1. 개요

MySQL에서 저장 프로시저는 MySQL 서버에서 실행될 수 있는 미리 작성된 SQL 문 블록입니다. 저장 프로시저는 MySQL에서 일반적인 작업을 완료하는 작업을 저장, 실행 및 재사용할 수 있으므로 SQL을 처음 접하는 사용자도 복잡한 SQL 프로그래밍을 간단하게 만들 수 있습니다. 기존 SQL 문과 비교할 때 저장 프로시저의 장점은 서버 측에서 실행될 수 있어 네트워크 전송 및 데이터 직렬화 양이 줄어든다는 것입니다.

MySQL 저장 프로시저는 스칼라 값 또는 결과 세트일 수 있는 결과를 반환할 수 있습니다. 스칼라 값의 경우 저장 프로시저가 OUT 매개변수를 통해 반환하거나 결과 집합의 경우 값을 반환할 수 있으므로 이를 처리하려면 커서를 사용해야 합니다. 저장 프로시저에서 반환된 결과 집합은 일반적으로 여러 행으로 구성되므로 MySQL은 커서를 사용하여 결과 집합을 처리하도록 지원합니다. 커서는 결과 집합의 데이터 행을 나타내는 포인터입니다. 커서를 사용하면 결과 집합을 반복하고 행을 변수에 저장할 수 있습니다.

2. 저장 프로시저의 커서

저장 프로시저를 사용하여 데이터를 읽을 때 커서는 매우 유용한 도구입니다. 커서를 사용하면 사용자는 결과 집합을 반복하고 그 안에 있는 데이터를 특정 변수에 저장할 수 있습니다. MySQL을 사용하면 커서를 매우 쉽게 사용할 수 있습니다. 개발자는 SELECT 문을 제공하고 이를 저장 프로시저로 캡슐화하기만 하면 됩니다. 다음은 커서를 사용하는 저장 프로시저의 예입니다.

DELIMITER //
CREATE PROCEDUREexample_proc()example_proc()
BEGIN

DECLARE done INT DEFAULT FALSE; DECLARE a INT; DECLARE b VARCHAR(255); DECLARE cur CURSOR FOR SELECT id, name FROM users; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; read_loop: LOOP FETCH cur INTO a, b; IF done THEN LEAVE read_loop; END IF; SELECT CONCAT(a, ':', b); END LOOP; CLOSE cur;
로그인 후 복사

END //
DELIMITER ;

在上面的代码中,我们首先定义了一个游标变量,SELECT语句从users表中读取id和name两列。然后,打开游标并遍历结果集。变量a和b分别保存游标当前行的值。如果我们已经遍历了结果集,则done变量将赋值为TRUE。如果done为TRUE,则退出循环并关闭游标。最后,使用SELECT语句打印出每个行的值。

三、存储过程中的结果集

当存储过程需要输出结果集时,我们需要使用游标。MySQL允许我们声明一个游标变量(CURSOR),然后使用它来处理结果集。下面是一个带有结果集的示例存储过程:

DELIMITER //
CREATE PROCEDUREexample_procBEGIN

DECLARE done INT DEFAULT FALSE; DECLARE a INT; DECLARE b VARCHAR(255); DECLARE cur CURSOR FOR SELECT id, name FROM users; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; CREATE TEMPORARY TABLE results (id INT, name VARCHAR(255)); OPEN cur; read_loop: LOOP FETCH cur INTO a, b; IF done THEN LEAVE read_loop; END IF; INSERT INTO results (id, name) VALUES (a, b); END LOOP; CLOSE cur; SELECT * FROM results;
로그인 후 복사
END //

DELIMITER ;

위 코드에서 먼저 A를 정의합니다. 커서 변수가 생성되고 SELECT 문은 사용자 테이블에서 id 및 name 열을 읽습니다. 그런 다음 커서를 열고 결과 세트를 반복합니다. 변수 a와 b는 각각 커서의 현재 행 값을 저장합니다. 결과 세트를 이미 반복한 경우 done 변수에 TRUE가 할당됩니다. 완료가 TRUE이면 루프를 종료하고 커서를 닫습니다. 마지막으로 SELECT 문을 사용하여 각 행의 값을 인쇄합니다.

3. 저장 프로시저의 결과 세트

저장 프로시저가 결과 세트를 출력해야 하는 경우 커서를 사용해야 합니다. MySQL을 사용하면 커서 변수(CURSOR)를 선언한 다음 이를 사용하여 결과 집합을 처리할 수 있습니다. 다음은 결과 집합이 있는 저장 프로시저의 예입니다.

DELIMITER //CREATE PROCEDURE example_proc()BEGINrrreeeEND //DELIMITER ;위 코드에서 먼저, 커서 변수 cur가 정의되고 사용자 테이블의 id 및 name 열이 SELECT 문에서 읽혀집니다. 그런 다음 CREATE TEMPORARY TABLE 명령을 사용하여 커서 읽기 결과를 저장하기 위한 임시 테이블 결과를 생성합니다. 커서를 열고 INSERT INTO 문을 사용하여 결과 집합에 각 행을 삽입합니다. 마지막으로 SELECT 문을 사용하여 결과 테이블의 모든 행을 순서대로 검색합니다. 4. 결론MySQL의 저장 프로시저 지원을 통해 사용자는 SQL 문을 사용하는 프로그램을 작성할 수 있으며 이러한 프로그램은 다른 프로그램처럼 호출될 수 있습니다. 저장 프로시저는 네트워크 전송량을 줄이고, 데이터 검색 속도를 높이고, 성능을 향상시키는 등의 작업을 수행할 수 있습니다. 커서를 사용하여 결과 집합을 탐색하고 특정 변수에 데이터를 저장할 수 있습니다. 커서는 결과 집합의 데이터 행에 대한 포인터입니다. 커서를 사용하면 사용자가 결과 집합을 보다 유연하게 처리할 수 있습니다. 저장 프로시저가 결과 집합을 출력해야 하는 경우 커서를 사용하여 결과 집합을 처리해야 합니다. MySQL을 사용하면 커서 변수를 선언한 다음 이를 사용하여 결과 집합을 처리할 수 있습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!