>  기사  >  데이터 베이스  >  mysql 저장 프로시저와 저장 함수의 차이점은 무엇입니까?

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

青灯夜游
青灯夜游원래의
2022-02-17 15:22:2616583검색

차이점: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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