>데이터 베이스 >MySQL 튜토리얼 >mysql 저장 프로시저란 무엇인가

mysql 저장 프로시저란 무엇인가

coldplay.xixi
coldplay.xixi원래의
2020-10-12 11:18:102186검색

mysql 저장 프로시저: 먼저 데이터베이스 언어 SQL 문을 실행하기 전에 컴파일해야 하며, 저장 프로시저는 특정 기능을 완료하기 위한 SQL 문 집합입니다. 프로시저 이름을 저장하고 지정된 매개변수로 호출합니다.

mysql 저장 프로시저란 무엇인가

더 많은 관련 무료 학습 권장 사항: mysql 튜토리얼(비디오)

저장 프로시저 소개

일반적으로 사용되는 운영 데이터베이스 언어 SQL 문은 실행 중에 필요합니다. 먼저 컴파일한 후 실행해야 하며, 저장 프로시저(Stored Procedure)는 특정 기능을 완료하기 위한 SQL 문의 집합으로, 사용자가 저장 프로시저의 이름을 지정하고 매개변수를 제공합니다. (매개변수가 있는 저장 프로시저인 경우) 이를 실행합니다.

저장 프로시저는 데이터베이스에 생성되고 저장되는 프로그래밍 가능한 기능입니다. 이는 SQL 문과 일부 특수 제어 구조로 구성될 수 있습니다. 저장 프로시저는 다양한 애플리케이션이나 플랫폼에서 동일한 기능을 수행하거나 특정 기능을 캡슐화하려는 경우에 유용합니다. 데이터베이스의 저장 프로시저는 프로그래밍의 객체 지향 접근 방식을 시뮬레이션한 것으로 볼 수 있습니다. 이를 통해 데이터에 액세스하는 방법을 제어할 수 있습니다.

저장 프로시저에는 일반적으로 다음과 같은 장점이 있습니다.

저장 프로시저는 SQL 언어의 기능과 유연성을 향상시킵니다. 저장 프로시저는 흐름 제어 문을 사용하여 작성할 수 있고 유연성이 뛰어나며 복잡한 판단과 더 복잡한 작업을 완료할 수 있습니다.

저장 프로시저를 사용하면 표준 구성 요소를 프로그래밍할 수 있습니다. 저장 프로시저가 생성된 후에는 저장 프로시저의 SQL 문을 다시 작성할 필요 없이 프로그램에서 여러 번 호출할 수 있습니다. 그리고 데이터베이스 전문가는 애플리케이션 소스 코드에 영향을 주지 않고 언제든지 저장 프로시저를 수정할 수 있습니다.

저장 프로시저를 사용하면 실행 속도가 더 빨라질 수 있습니다. 작업에 많은 양의 Transaction-SQL 코드가 포함되어 있거나 여러 번 실행되는 경우 저장 프로시저는 일괄 처리보다 훨씬 빠르게 실행됩니다. 저장 프로시저가 미리 컴파일되어 있기 때문입니다. 저장 프로시저가 처음 실행되면 최적화 프로그램이 쿼리를 분석하고 최적화하며 최종적으로 실행 계획이 시스템 테이블에 저장됩니다. 일괄 Transaction-SQL 문은 실행될 때마다 컴파일하고 최적화해야 하며 속도가 상대적으로 느립니다.

저장 프로시저는 네트워크 트래픽을 줄일 수 있습니다. 동일한 데이터베이스 개체에 대한 작업(예: 쿼리, 수정)의 경우 이 작업에 포함된 Transaction-SQL 문이 저장 프로시저로 구성되면 클라이언트 컴퓨터에서 저장 프로시저가 호출될 때 호출만 전송됩니다. 네트워크 문을 삭제하여 네트워크 트래픽을 크게 늘리고 네트워크 부하를 줄입니다.

저장 프로시저는 보안 메커니즘으로 완벽하게 활용될 수 있습니다. 시스템 관리자는 특정 저장 프로시저의 실행 권한을 제한함으로써 해당 데이터에 대한 접근 권한을 제한하고, 승인되지 않은 사용자가 데이터에 접근하는 것을 방지하며 데이터의 보안을 확보할 수 있습니다.

MySQL의 저장 프로시저에 대하여

저장 프로시저는 데이터베이스 저장의 중요한 기능이지만 MySQL은 5.0 이전에는 저장 프로시저를 지원하지 않았기 때문에 MySQL의 적용이 크게 줄었습니다. 다행스럽게도 MySQL 5.0에서는 마침내 저장 프로시저를 지원하기 시작했습니다. 이는 데이터베이스 처리 속도를 크게 향상시키고 데이터베이스 프로그래밍의 유연성도 향상시킬 수 있습니다.

MySQL 저장 프로시저 생성

(1). 형식

MySQL 저장 프로시저 생성 형식:CREATE PROCEDURE 过程名 ([过程参数[,...]]) [特性 ...] 过程体

예는 다음과 같습니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE proc1(OUT s int)
-> BEGIN
-> SELECT COUNT(*) INTO s FROM user;
-> END
-> //
mysql> DELIMITER ;

참고:

여기서 주의해야 할 사항은 DELIMITER입니다. // 그리고 DELIMITER는 구분자를 의미합니다. 왜냐하면 MySQL은 기본적으로 ";"를 구분자로 사용하기 때문입니다. 구분자를 선언하지 않으면 컴파일러는 저장 프로시저를 SQL 문으로 처리합니다. 저장 프로시저는 오류가 보고되므로 DELIMITER 키워드를 사용하여 현재 세그먼트 구분 기호를 미리 선언해야 MySQL이 저장 프로시저에서 ";"를 코드로 처리하고 해당 코드를 실행하지 않도록 해야 합니다. 사용 후.

저장 프로시저에는 필요에 따라 입력, 출력, 입력 및 출력 매개변수가 있을 수 있으며, 유형은 int입니다. 매개변수가 여러 개인 경우 ","를 사용하여 구분하세요.

프로세스 본문의 시작과 끝은 BEGIN과 END로 표시됩니다.

(2) 선언 구분 기호

사실 위의 주석은 매우 명확하므로 더 말할 필요가 없지만 관리자 관리 도구를 사용하는 경우 이 점에 조금 주의해야 합니다. MySQL의 경우 직접 생성할 수 있으며 선언이 필요하지 않습니다.

(3). 매개변수

  • MySQL 저장 프로시저의 매개변수는 저장 프로시저 정의에 사용됩니다. IN, OUT, INOUT 형식은 다음과 같습니다.

  • CREATE PROCEDURE([ [IN |OUT |INOUT ] 매개변수 이름 데이터 유형...])

  • IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

  • OUT 输出参数:该值可在存储过程内部被改变,并可返回

  • INOUT 输入输出参数:调用时指定,并且可被改变和返回

代码示例

header('Content-Type:text/html;charset=UTF-8');
$conn = mysql_connect('localhost','root','123456') or die ("数据连接错误!!!");
mysql_select_db('test',$conn);

实例一:无参的存储过程

$sql = "create procedure myproce()
begin
INSERT INTO user (id, username, sex) VALUES (NULL, 's', '0');
end;
";
$res = mysql_query($sql);//创建一个myproce的存储过程
$sql = "call test.myproce();";
$res = mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。
var_dump($res);

实例二:传入参数的存储过程

//$sql = "create procedure myproce2(in score int)
//begin
//if score >= 60 then
//select 'pass';
//else
//select 'no';
//end if;
//end;
//";
//mysql_query($sql);//创建一个myproce2的存储过程
//$sql = "call test.myproce2(90);";
//$reslut = mysql_query($sql);//调用myproce2的存储过程,看不到效果,可以在cmd下看到结果。
//$array = mysql_fetch_array($reslut);
//var_dump($array);

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

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