Stored Procedure: A set of programmable functions, which are a set of SQL statements to complete specific functions. They are compiled, created and saved in the database. Users can specify the name of the stored procedure and give parameters (required ) to call execution.
Recommended courses: MySQL Tutorial.

Advantages (Why use stored procedures?):
① Encapsulate some highly repetitive operations into a stored procedure, simplifying Calling these SQL
②Batch processing: SQL loop, reducing traffic, that is, "running batches"
③Unified interface to ensure data security
Compared to oracle As far as databases are concerned, MySQL's stored procedures have relatively weak functions and are rarely used.
1. Creation and calling of stored procedures
>A stored procedure is a piece of code with a name that is used to complete a specific function.
>The created stored procedure is saved in the data dictionary of the database.
1. Create a stored procedure
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name 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
[begin_label:] BEGIN
[statement_list]
……
END [end_label]
#Create a database and back up the data table for example operations
mysql> create database db1; mysql> use db1; mysql> create table PLAYERS as select * from TENNIS.PLAYERS; mysql> create table MATCHES as select * from TENNIS.MATCHES;
Example: Create a stored procedure to delete all events in which a given player participates Competition
mysql> delimiter $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义) mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER) -> BEGIN -> DELETE FROM MATCHES -> WHERE playerno = p_playerno; -> END$$ Query OK, 0 rows affected (0.01 sec) mysql> delimiter ; #将语句的结束符号恢复为分号
Analysis:
By default, the stored procedure is associated with the default database. If you want to specify that the stored procedure is created under a specific database, then add the database name in front of the procedure name. Make a prefix;
When defining a procedure, use the DELIMITER $$ command to temporarily change the end symbol of the statement from a semicolon; to two $$, so that the semicolon used in the procedure body is directly passed to the server. And will not be interpreted by the client (such as mysql).
2. Parameters of stored procedures
Stored procedures can have 0 or more parameters, which are used for the definition of stored procedures.
3 parameter types:
IN input parameter: indicates that the caller passes a value to the process (the passed value can be a literal or variable)
OUT output parameter: Indicates that the process passes a value to the caller (can return multiple values) (the outgoing value can only be a variable)
INOUT input and output parameters: It not only means that the caller passes a value to the process, but also means that the process passes a value to the caller Or pass out the value (the value can only be a variable)
1. in input parameter
mysql> delimiter $$ mysql> create procedure in_param(in p_in int) -> begin -> select p_in; -> set p_in=2; -> select P_in; -> end$$ mysql> delimiter ; mysql> set @p_in=1; mysql> call in_param(@p_in);+------+ | p_in | +------+ | 1 | +------+ +------+ | P_in | +------+ | 2 | +------+mysql> select @p_in;+-------+ | @p_in | +-------+ | 1 | +-------+
# As can be seen from the above, p_in is modified during the stored procedure, but it does not affect @p_id value, because the former is a local variable and the latter is a global variable.
2. Out output parameter
mysql> delimiter //mysql> create procedure out_param(out p_out int) -> begin -> select p_out; -> set p_out=2; -> select p_out; -> end -> //mysql> delimiter ; mysql> set @p_out=1; mysql> call out_param(@p_out);+-------+ | p_out | +-------+ | NULL | +-------+ #因为out是向调用者输出参数,不接收输入的参数,所以存储过程里的p_out为null+-------+ | p_out | +-------+ | 2 | +-------+mysql> select @p_out;+--------+ | @p_out | +--------+ | 2 | +--------+ #调用了out_param存储过程,输出参数,改变了p_out变量的值
3. Inout input parameter
mysql> delimiter $$ mysql> create procedure inout_param(inout p_inout int) -> begin -> select p_inout; -> set p_inout=2; -> select p_inout; -> end -> $$ mysql> delimiter ; mysql> set @p_inout=1; mysql> call inout_param(@p_inout);+---------+ | p_inout | +---------+ | 1 | +---------+ +---------+ | p_inout | +---------+ | 2 | +---------+mysql> select @p_inout;+----------+ | @p_inout | +----------+ | 2 | +----------+
#The inout_param stored procedure is called, accepting the input parameters, outputting the parameters, and changing the variables
Note:
①If the process has no parameters, you must also write parentheses after the process name
Example: CREATE PROCEDURE sp_name ([proc_parameter[,...] ]) ......
②Make sure that the name of the parameter is not equal to the name of the column, otherwise in the procedure body, the parameter name will be treated as a column name
Strongly recommended:
>Use in parameters for input values;
>Use out parameters for return values;
>Use inout parameters as little as possible.
The above is the detailed content of How to create a stored procedure in mysql. For more information, please follow other related articles on the PHP Chinese website!
MySQL's Role: Databases in Web ApplicationsApr 17, 2025 am 12:23 AMThe main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.
MySQL: Building Your First DatabaseApr 17, 2025 am 12:22 AMThe steps to build a MySQL database include: 1. Create a database and table, 2. Insert data, and 3. Conduct queries. First, use the CREATEDATABASE and CREATETABLE statements to create the database and table, then use the INSERTINTO statement to insert the data, and finally use the SELECT statement to query the data.
MySQL: A Beginner-Friendly Approach to Data StorageApr 17, 2025 am 12:21 AMMySQL is suitable for beginners because it is easy to use and powerful. 1.MySQL is a relational database, and uses SQL for CRUD operations. 2. It is simple to install and requires the root user password to be configured. 3. Use INSERT, UPDATE, DELETE, and SELECT to perform data operations. 4. ORDERBY, WHERE and JOIN can be used for complex queries. 5. Debugging requires checking the syntax and use EXPLAIN to analyze the query. 6. Optimization suggestions include using indexes, choosing the right data type and good programming habits.
Is MySQL Beginner-Friendly? Assessing the Learning CurveApr 17, 2025 am 12:19 AMMySQL is suitable for beginners because: 1) easy to install and configure, 2) rich learning resources, 3) intuitive SQL syntax, 4) powerful tool support. Nevertheless, beginners need to overcome challenges such as database design, query optimization, security management, and data backup.
Is SQL a Programming Language? Clarifying the TerminologyApr 17, 2025 am 12:17 AMYes,SQLisaprogramminglanguagespecializedfordatamanagement.1)It'sdeclarative,focusingonwhattoachieveratherthanhow.2)SQLisessentialforquerying,inserting,updating,anddeletingdatainrelationaldatabases.3)Whileuser-friendly,itrequiresoptimizationtoavoidper
Explain the ACID properties (Atomicity, Consistency, Isolation, Durability).Apr 16, 2025 am 12:20 AMACID attributes include atomicity, consistency, isolation and durability, and are the cornerstone of database design. 1. Atomicity ensures that the transaction is either completely successful or completely failed. 2. Consistency ensures that the database remains consistent before and after a transaction. 3. Isolation ensures that transactions do not interfere with each other. 4. Persistence ensures that data is permanently saved after transaction submission.
MySQL: Database Management System vs. Programming LanguageApr 16, 2025 am 12:19 AMMySQL is not only a database management system (DBMS) but also closely related to programming languages. 1) As a DBMS, MySQL is used to store, organize and retrieve data, and optimizing indexes can improve query performance. 2) Combining SQL with programming languages, embedded in Python, using ORM tools such as SQLAlchemy can simplify operations. 3) Performance optimization includes indexing, querying, caching, library and table division and transaction management.
MySQL: Managing Data with SQL CommandsApr 16, 2025 am 12:19 AMMySQL uses SQL commands to manage data. 1. Basic commands include SELECT, INSERT, UPDATE and DELETE. 2. Advanced usage involves JOIN, subquery and aggregate functions. 3. Common errors include syntax, logic and performance issues. 4. Optimization tips include using indexes, avoiding SELECT* and using LIMIT.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools






