>  기사  >  데이터 베이스  >  mysql의 저장 프로시저는 무엇인가요?

mysql의 저장 프로시저는 무엇인가요?

青灯夜游
青灯夜游원래의
2021-06-11 14:13:546207검색

mysql에서 저장 프로시저는 특정 기능을 완료하기 위한 SQL 문 집합입니다. 저장 프로시저를 사용하는 목적은 SQL 문과 함께 일반적이거나 복잡한 작업을 미리 작성하여 지정된 이름으로 저장하는 것입니다. 이 프로시저를 컴파일하고 최적화하여 데이터베이스 서버에 저장하므로 저장 프로시저라고 합니다.

mysql의 저장 프로시저는 무엇인가요?

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

Stored Procedure는 외부 프로그램에서 호출할 수 있도록 복잡한 프로그램을 데이터베이스에 저장하는 데이터베이스 개체입니다.

저장 프로시저는 특정 기능을 수행하도록 설계된 SQL 문 집합입니다. 저장 프로시저를 사용하는 목적은 SQL 문과 함께 일반적이거나 복잡한 작업을 미리 작성하여 지정된 이름으로 저장하는 것입니다. 이 프로시저를 컴파일하고 최적화하여 데이터베이스 서버에 저장하므로 저장 프로시저라고 합니다. 향후 정의된 저장 프로시저와 동일한 서비스를 제공하기 위해 데이터베이스가 필요한 경우 "CALL 저장 프로시저 이름"만 호출하면 자동으로 완료됩니다.

데이터베이스를 운영하는데 흔히 사용되는 SQL 문은 먼저 컴파일한 후 실행해야 합니다. 저장 프로시저는 SQL 문 실행에 대한 또 다른 접근 방식을 취합니다.

저장 프로시저는 데이터베이스에 생성되고 저장되는 프로그래밍 가능한 함수입니다. 일반적으로 SQL 문과 일부 특수 제어 구조로 구성됩니다. 저장 프로시저는 다양한 애플리케이션이나 플랫폼에서 동일한 특정 기능을 수행하려는 경우 특히 적합합니다.

MySQL 5.0 버전은 이전에는 저장 프로시저를 지원하지 않아 MySQL 적용이 크게 줄었습니다. MySQL은 버전 5.0부터 저장 프로시저를 지원해 데이터베이스의 처리 속도를 향상시킬 뿐만 아니라 데이터베이스 프로그래밍의 유연성도 향상시킵니다. 저장 프로시저는 데이터베이스에서 데이터 변환, 데이터 마이그레이션에 사용할 수 있는 중요한 기능입니다. 및 프로덕션 보고서는 프로그래밍 언어와 유사합니다. 성공적으로 실행되면 언제든지 호출하여 지정된 기능 작업을 완료할 수 있습니다.

저장 프로시저를 사용하면 데이터베이스 액세스 효율성이 향상될 뿐만 아니라 데이터베이스 사용 보안도 향상됩니다.

호출자의 경우 저장 프로시저가 SQL 문을 캡슐화하므로 호출자는 논리 함수의 특정 구현 프로세스를 고려할 필요가 없습니다. 간단한 호출만으로 Java, C# 등 프로그래밍 언어에서 호출할 수 있습니다.

저장 프로시저 만들기CREATE PROCEDURE 문을 사용하여 저장 프로시저를 만들 수 있습니다.

구문 형식은 다음과 같습니다.

CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[프로시저 매개 변수 [,…] ] 형식

[ IN | OUT | INOUT ] <参数名> <类型>

구문 설명은 다음과 같습니다.

1) 프로시저 이름

현재 데이터베이스에 기본적으로 생성되는 저장 프로시저의 이름입니다. 특정 데이터베이스에 저장 프로시저를 생성해야 하는 경우 이름 앞에 데이터베이스 이름(db_name.sp_name)을 추가합니다.

이름은 MySQL 내장 함수와 동일한 이름을 선택하지 않도록 해야 합니다. 그렇지 않으면 오류가 발생합니다.

2) 프로세스 매개변수

는 프로세스의 매개변수 목록을 저장합니다. 그 중 4a82531f3fde107146fdd03610e22e4b은 매개변수 이름이고, 30690cee1a11d5dfbdced93b89f678ee은 매개변수의 유형입니다(유효한 MySQL 데이터 유형일 수 있음). 매개변수가 여러 개인 경우 매개변수 목록에서 쉼표로 구분하세요. 저장 프로시저에는 매개 변수가 없을 수도 있고(이 경우 저장 프로시저 이름 뒤에 괄호 쌍을 추가해야 함) 매개 변수가 하나 이상 있을 수도 있습니다.

MySQL 저장 프로시저는 각각 세 가지 키워드 IN, OUT 및 INOUT으로 식별되는 세 가지 유형의 매개변수, 즉 입력 매개변수, 출력 매개변수 및 입력/출력 매개변수를 지원합니다. 그 중 입력 매개변수는 저장 프로시저에 전달될 수 있고, 출력 매개변수는 저장 프로시저가 연산 결과를 반환해야 할 때 사용되며, 입/출력 매개변수는 입력 매개변수와 출력 매개변수로 모두 사용될 수 있다.

매개변수 이름은 데이터 테이블의 열 이름과 동일하면 안 됩니다. 그렇지 않으면 오류 메시지가 반환되지 않더라도 저장 프로시저의 SQL 문은 매개 변수 이름을 열 이름으로 처리합니다. , 예측할 수 없는 결과를 초래합니다.

3) 프로시저 본문

저장 프로시저 본문이라고도 하는 저장 프로시저의 주요 부분에는 프로시저 호출 시 실행되어야 하는 SQL 문이 포함되어 있습니다. 이 섹션은 BEGIN 키워드로 시작하고 END 키워드로 끝납니다. 저장 프로시저 본문에 SQL 문이 하나만 있는 경우 BEGIN-END 플래그를 생략할 수 있습니다.

예:

ShowStuScore라는 저장 프로시저를 생성합니다. 저장 프로시저의 기능은 학생 성적 정보 테이블에서 학생 성적 정보를 쿼리하는 것입니다. 입력 SQL 문 및 실행 과정은 다음과 같습니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE ShowStuScore()
    -> BEGIN
    -> SELECT * FROM tb_students_score;
    -> END //
Query OK, 0 rows affected (0.09 sec)

결과는 ShowStuScore 저장 프로시저가 성공적으로 생성되었음을 보여줍니다.

저장 프로시저 삭제저장 프로시저가 생성되면 삭제될 때까지 데이터베이스 서버에 저장됩니다. MySQL 데이터베이스에 더 이상 사용되지 않는 저장 프로시저가 있으면 데이터베이스에서 삭제해야 합니다.

DROP PROCEDURE 문은 MySQL에서 데이터베이스의 기존 저장 프로시저를 삭제하는 데 사용됩니다. 구문 형식은 다음과 같습니다.

DROP PROCEDURE [ IF EXISTS ] <过程名>

구문 설명은 다음과 같습니다.

    프로시저 이름: 삭제할 저장 프로시저의 이름을 지정합니다.
  • IF EXISTS:指定这个关键字,用于防止因删除不存在的存储过程而引发的错误。

注意:存储过程名称后面没有参数列表,也没有括号,在删除之前,必须确认该存储过程没有任何依赖关系,否则会导致其他与之关联的存储过程无法运行。

实例

下面删除存储过程 ShowStuScore,SQL 语句和运行结果如下:

mysql> DROP PROCEDURE ShowStuScore;
Query OK, 0 rows affected (0.08 sec)

删除后,可以通过查询 information_schema 数据库下的 routines 表来确认上面的删除是否成功。SQL 语句和运行结果如下:

mysql> SELECT * FROM information_schema.routines WHERE routine_name=&#39;ShowStuScore&#39;;
Empty set (0.03 sec)

结果显示,没有查询出任何记录,说明存储过程 ShowStuScore 已经被删除了。

(推荐教程:mysql视频教程

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

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