在 MySQL 中创建带参数的过程?
mysqlmysqli database
您可以使用 IN 和 OUT 创建参数。IN 用于获取输入参数,OUT 可用于输出。
语法如下
DELIMITER // CREATE PROCEDURE yourProcedureName(IN yourParameterName dataType,OUT yourParameterName dataType ) BEGIN yourStatement1; yourStatement2; . . N END; // DELIMITER ;
首先,我们将创建一个表。创建表的查询如下
mysql> create table SumOfAll -> ( -> Amount int -> ); Query OK, 0 rows affected (0.78 sec)
使用 insert 命令在表中插入一些记录。 查询语句如下
mysql> insert into SumOfAll values(100); Query OK, 1 row affected (0.18 sec) mysql> insert into SumOfAll values(330); Query OK, 1 row affected (0.24 sec) mysql> insert into SumOfAll values(450); Query OK, 1 row affected (0.10 sec) mysql> insert into SumOfAll values(400); Query OK, 1 row affected (0.20 sec)
使用 select 语句显示表中的所有记录。查询如下
mysql> select *from SumOfAll;
以下是输出 −
+--------+ | Amount | +--------+ | 100 | | 330 | | 450 | | 400 | +--------+ 4 rows in set (0.00 sec)
现在,我们将创建一个存储过程来检查表中是否存在该值。如果表中不存在给定值,则您将获得 NULL 值。
存储过程如下
mysql> DELIMITER // mysql> create procedure sp_ChechValue(IN value1 int,OUT value2 int) -> begin -> set value2=(select Amount from SumOfAll where Amount=value1); -> end; -> // Query OK, 0 rows affected (0.20 sec) mysql> delimiter ;
让我们使用一些值来调用存储过程,并将输出存储在会话变量中。
情况 1:当表中不存在该值时。
mysql> call sp_ChechValue(300,@isPresent); Query OK, 0 rows affected (0.00 sec)
现在使用 select 语句检查变量 @isPresent 中的值。查询如下
mysql> select @isPresent;
以下是输出 −
+------------+ | @isPresent | +------------+ | NULL | +------------+ 1 row in set (0.00 sec)
情况 2:当值存在时。
查询如下。让我们调用存储过程
mysql> call sp_ChechValue(330,@isPresent); Query OK, 0 rows affected (0.00 sec)
检查会话变量@isPresent 的值。查询如下
mysql> select @isPresent;
以下是输出 −
+------------+ | @isPresent | +------------+ | 330 | +------------+ 1 row in set (0.00 sec)