> 데이터 베이스 > MySQL 튜토리얼 > mysql 저장 프로시저와 저장 함수의 차이점은 무엇입니까?

mysql 저장 프로시저와 저장 함수의 차이점은 무엇입니까?

青灯夜游
풀어 주다: 2022-02-17 15:22:59
원래의
16616명이 탐색했습니다.

차이점: 1. 저장 함수에는 제한이 많지만 저장 프로시저는 상대적으로 제한이 적습니다. 2. 저장 함수는 호출자에게 하나의 결과 값만 반환하는 반면 저장 프로시저는 하나 이상의 결과 세트를 반환합니다. 저장 프로시저에는 세 가지 매개변수 유형이 있고 저장 함수에는 매개변수 유형이 하나만 있습니다.

mysql 저장 프로시저와 저장 함수의 차이점은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

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

저장 프로시저는 대규모 데이터베이스 시스템에서 특정 기능을 완료하는 데 사용되는 SQL 문 집합입니다. 첫 번째 컴파일 후에는 다시 호출할 때 다시 컴파일할 필요가 없습니다. 사용자는 저장 프로시저의 이름과 이를 실행하기 위한 매개변수(저장 프로시저에 매개변수가 있는 경우)를 지정합니다. 저장 프로시저는 데이터베이스의 중요한 개체이므로 잘 설계된 데이터베이스 응용 프로그램에서는 저장 프로시저를 사용해야 합니다.

장점:
(1) 재사용: 저장 프로시저를 재사용할 수 있어 개발자의 작업량을 줄일 수 있습니다.
(2) 효율성 향상: 저장 프로시저는 처음 사용할 때 컴파일되므로 다시 컴파일할 필요가 없으므로 효율성이 향상됩니다.
(3) 네트워크 트래픽 감소: 저장 프로시저가 서버에 위치합니다. 호출 시 저장 프로시저의 이름과 매개변수만 전달하면 되므로 네트워크를 통해 전송되는 데이터의 양이 줄어듭니다.
(4) 보안: 매개변수화된 저장 프로시저를 통해 SQL 주입을 방지할 수 있으며, 저장 프로시저에 Grant, Deny, Revoke 권한을 적용할 수 있습니다.

단점:
(1) 디버깅 문제
(2) 이식성이 좋지 않음
(3) 유지 관리성이 좋지 않음

코드:

CREATE DEFINER=`root`@`%` PROCEDURE `getName`(IN `uid` int,OUT my_uname VARCHAR(255))
BEGIN
	#Routine body goes here...
select admin_name into my_uname from admin_user where id=uid;
  select my_uname;
END
로그인 후 복사

저장 함수란 무엇인가요?

저장 함수는 함수 이름, 매개 변수 및 결과 집합 반환을 포함하는 저장 프로시저 집합입니다. 저장 함수는 저장 프로시저와 구조가 비슷하지만 결과를 반환하려면 return 절이 있어야 합니다.

코드:

CREATE DEFINER=`root`@`%` FUNCTION `queryChildrenAreaInfo`(areaId INT) RETURNS varchar(4000) CHARSET utf8
BEGIN
	DECLARE sTemp VARCHAR(4000);
	DECLARE sTempChd VARCHAR(4000);
	
	SET sTemp='$';
	SET sTempChd = CAST(areaId AS CHAR);
	
	WHILE sTempChd IS NOT NULL DO
	SET sTemp= CONCAT(sTemp,',',sTempChd);
	SELECT GROUP_CONCAT(id) INTO sTempChd FROM personal_dept WHERE FIND_IN_SET(dept_parentId,sTempChd)>0;
	END WHILE;
	RETURN sTemp;
END
로그인 후 복사

저장 프로시저와 저장 함수의 차이점

1. 개요

저장 프로시저와 저장 함수를 통칭하여 저장 루틴이라고 합니다. 둘의 구문은 매우 유사하지만 내용이 다릅니다.

저장 기능에는 많은 제한이 있습니다. 예를 들어 임시 테이블을 사용할 수 없으며 테이블 변수만 사용할 수 있습니다. 사용할 수 없는 기능 등도 있습니다.

저장 프로시저에 대한 제한은 상대적으로 적고 구현되는 기능은 더 복잡합니다.

2. 반환 값의 차이

저장 함수는 호출자에게 단 하나의 결과 값을 반환합니다.

저장 프로시저는 하나 이상의 결과 집합을 반환하거나(함수는 이를 수행할 수 없음), 결과를 반환하지 않고 일부 효과나 작업을 달성하기만 합니다.

3. 다양한 호출 방법
저장된 함수는 SQL에 내장되어 있으며 cos(), sin()과 같은 내장 함수와 마찬가지로 select에서 호출할 수 있습니다.

4. 매개변수의 차이점

저장 함수의 매개변수 유형은 IN 매개변수와 유사합니다.

저장 프로시저에는 IN 매개변수, OUT 매개변수, INOUT 매개변수

in: 데이터만 전송됩니다. 외부에서 내부로 사용(값 전송), 숫자 값 또는 변수일 수 있음

out: 프로세스의 내부 사용에만 허용(외부 데이터는 사용되지 않음), 외부 사용(참조 전송: 외부 데이터 내부에 들어가기 전에 먼저 지워집니다), 변수만 가능합니다.

inout: 외부는 내부적으로 사용할 수 있고, 내부적으로 수정된 것도 외부에서 사용할 수 있습니다. 일반적인 참조 전송은 변수만 전달할 수 있습니다.


저장 프로시저는 사용자 정의 SQL 문 모음입니다. 사용자는 저장 프로시저를 호출하여 특정 테이블이나 기타 개체에 대한 작업을 디자인할 수 있습니다.

함수는 일반적으로 데이터베이스에 의해 정의된 메서드로, 매개변수를 수신하고 특정 유형의 값을 반환하며 특정 사용자 테이블을 포함하지 않습니다.

【관련 추천: mysql 비디오 튜토리얼

위 내용은 mysql 저장 프로시저와 저장 함수의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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