>  기사  >  데이터 베이스  >  mysql 저장 프로시저 함수

mysql 저장 프로시저 함수

PHPz
PHPz원래의
2023-05-18 09:50:37645검색

MySQL은 저장 프로시저와 함수의 기능을 가진 공통 데이터베이스 관리 시스템입니다. 이 기사에서는 MySQL의 저장 프로시저 및 함수의 개념, 사용법 및 예를 소개합니다.

1. 저장 프로시저

  1. 개념

저장 프로시저는 데이터베이스에 저장되고 반복적으로 실행될 수 있는 미리 컴파일된 SQL 문 집합입니다. 데이터 삽입, 업데이트, 삭제 등과 같은 복잡한 데이터베이스 작업을 수행하는 데 자주 사용됩니다. 저장 프로시저는 매개변수를 수신하고 하나 이상의 결과 세트를 반환할 수 있습니다.

  1. 저장 프로시저 만들기

CREATE PROCEDURE 문을 사용하여 저장 프로시저를 만듭니다. 구문은 다음과 같습니다.

CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] parameter_name datatype [(size)]) [NOT DETERMINISTIC] [SQL SECURITY {DEFINER | INVOKER}] [COMMENT ‘string’]
BEGIN
-- 存储过程内部语句
END;

그 중 매개 변수는 선택 사항입니다. IN은 입력 매개 변수를 나타내고 OUT은 출력 매개 변수를 나타내며 INOUT은 다음과 같습니다. 입력 매개변수와 출력 매개변수를 모두 나타냅니다. datatype은 데이터 유형을 나타내고, size는 길이를 나타내며, NOT DETERMINISTIC은 결정성을 나타내고, SQL SECURITY는 액세스 제어 수준을 나타내며, COMMENT는 저장 프로시저 내의 SQL 문 집합을 나타냅니다.

예:

CREATE PROCEDURE select_all_users ()
BEGIN
SELECT * FROM users;
END;

저장 프로시저의 이름은 select_all_users이고 매개 변수가 없으며 사용자 테이블의 모든 데이터를 쿼리하는 SELECT * FROM users 문을 내부적으로 실행합니다.

  1. 저장 프로시저 호출

CALL 문을 사용하여 저장 프로시저를 호출합니다. 구문은 다음과 같습니다.

CALL procedure_name(param1, param2, ...);

예:

CALL select_all_users();

이 문은 이전에 생성된 select_all_users 저장 프로시저를 실행합니다.

  1. 저장 프로시저 삭제

저장 프로시저를 삭제하려면 DROP PROCEDURE 문을 사용하세요. 구문은 다음과 같습니다.

DROP PROCEDURE IF EXISTS procedure_name;

예:

DROP PROCEDURE IF EXISTS select_all_users;

이 문은 select_all_users라는 저장 프로시저를 삭제합니다.

  1. 저장 프로시저 예시

다음은 입력 매개 변수를 받고 매개 변수에 2를 곱하여 출력하는 간단한 저장 프로시저 예시입니다.

CREATE PROCEDURE double_num (IN num INT, OUT result INT)
BEGIN
SET result = num * 2;
END;

저장 프로시저 호출:

CALL double_num(5, @result);
SELECT @result;

출력 결과는 10입니다.

2. 함수의 개념

함수는 값을 반환하고 0개 이상의 입력 매개변수를 받을 수 있는 특수 저장 프로시저입니다. 저장 프로시저와 달리 함수는 데이터 정의 문(CREATE, ALTER, DROP)이나 트랜잭션 제어 문(COMMIT, ROLLBACK)을 실행할 수 없습니다.

  1. 함수 만들기

CREATE FUNCTION 문을 사용하여 함수를 만듭니다. 구문은 다음과 같습니다.

CREATE FUNCTION function_name ([parameter_name datatype [(size)]] [, ...]) RETURNS return_datatype
BEGIN
-- 函数内部语句
END;

그 중 para_name과 datatype은 입력 매개변수의 이름과 유형을 나타내고, size는 return_datatype을 나타냅니다. 반환 값의 데이터 유형을 나타내며 BEGIN과 END 사이는 저장 프로시저 내부의 SQL 문 집합입니다.

예:

CREATE FUNCTION double_num (num INT) RETURNS INT
BEGIN
RETURN num * 2;
END;

함수는 double_num, 입력 매개변수는 num, 반환 유형은 INT, num 값에 2를 곱하여 반환됩니다.

  1. 함수 호출

SELECT 문을 사용하여 함수를 호출하고 결과를 쿼리합니다.

SELECT double_num(5);

출력 결과는 10입니다.

  1. 함수 삭제

함수를 삭제하려면 DROP FUNCTION 문을 사용하세요. 구문은 다음과 같습니다.

DROP FUNCTION IF EXISTS function_name;

예:

DROP FUNCTION IF EXISTS double_num;

이 문은 double_num이라는 함수를 삭제합니다.

  1. 함수 예

다음은 숫자의 계승을 구하는 간단한 함수 예입니다.

CREATE FUNCTION factorial (n INT) RETURNS INT
BEGIN
IF n <= 0 THEN
RETURN 1;
ELSE
RETURN n * factorial(n - 1);
END IF;
END;

함수 호출:

SELECT factorial(5);

출력 결과는 120입니다.

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

저장 프로시저와 함수의 주요 차이점은 다음과 같습니다.

  1. 다양한 반환 유형: 저장 프로시저는 값을 반환할 필요가 없지만 함수는 반환합니다.
  2. 다양한 처리 방법: 저장 프로시저는 일반적으로 삽입, 업데이트, 삭제 등과 같은 일부 작업을 수행하는 데 사용됩니다. 함수는 종종 수학적 계산 및 문자열 처리에 사용됩니다.
  3. 다른 매개변수 전달 방법: 저장 프로시저에서는 IN, OUT 및 INOUT 매개변수 전달 방법을 사용할 수 있습니다. 함수에서는 IN 매개변수 전달 방법만 허용됩니다.
  4. 호출 방법이 다릅니다. 저장 프로시저는 CALL 문을 사용하여 호출됩니다. 함수는 SELECT, WHERE 및 HAVING 절에서 호출할 수 있습니다.

4. 요약

이 글에서는 MySQL의 저장 프로시저와 함수의 개념, 사용법, 예를 소개합니다. 저장 프로시저와 함수는 데이터베이스 관리에 중요한 도구이며 데이터베이스의 효율성과 보안을 향상시킬 수 있습니다. 실제 개발에서는 특정 요구 사항에 따라 저장 프로시저나 함수를 선택해야 합니다.

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

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