Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

저장 프로시저란 무엇이며 MySQL 저장 프로시저를 생성하는 방법은 무엇입니까?


일반 컴퓨팅 언어의 맥락에서 저장 프로시저는 데이터베이스에 저장된 서브프로그램과 같은 서브루틴으로 정의될 수 있습니다. MySQL 컨텍스트에서 데이터베이스 카탈로그 내부에 저장된 선언적 SQL 문의 세그먼트입니다. MySQL에서 저장 프로시저를 작성하기 전에 MySQL 5에서 저장 프로시저를 도입하기 때문에 버전을 확인해야 합니다. 다음은 저장 프로시저를 만드는 구문입니다. -

구문

CREATE [DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter: [ IN | OUT | INOUT ] param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement

예시

다음은 'student_info' 테이블에서 다음 데이터가 있는 모든 레코드를 가져오는 간단한 절차를 만든 예입니다.

mysql> select * from student_info;
+-----+---------+------------+------------+
| id  | Name    | Address    | Subject    |
+-----+---------+------------+------------+
| 100 | Aarav   | Delhi      | Computers  |
| 101 | YashPal | Amritsar   | History    |
| 105 | Gaurav  | Jaipur     | Literature |
| 110 | Rahul   | Chandigarh | History    |
+------+--------+------------+------------+
4 rows in set (0.00 sec)

이제 다음 쿼리의 도움으로 allrecords()라는 저장 프로시저를 만들었습니다.

mysql> Delimiter //
mysql> Create Procedure allrecords()
    -> BEGIN
    -> Select * from Student_info;
    -> END//
Query OK, 0 rows affected (0.02 sec)
mysql> DELIMITER ;