我认为搜索谷歌会给你很多例子!!
一(取自这里)
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`get_users` $$
CREATE PROCEDURE `get_users`(
IN firstName VARCHAR(100),
OUT totalUsers INT
)
BEGIN
SELECT COUNT(*) INTO totalUsers
FROM users
WHERE first_name = firstName;
SELECT * FROM users
WHERE first_name = firstName;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
帖子说:
请注意,此存储过程的主体中有两条语句。第一个 select count(*) 语句计算名字等于 in 变量 firstName 的总人数。一旦获得计数,它就会将输出变量 totalUsers 设置为该值。
下一个语句是一个简单的选择。这将为名字等于 in 变量 firstName 的用户选择所有字段并返回记录集。因此,通过调用此存储过程并传入两个参数(名字、总数),将返回一个记录集并设置一个输出变量——然后可以查询该变量。
编辑:
如在MySQL 网站:
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
# Set value of OUT parameter
SELECT VERSION() INTO ver_param;
# Increment value of INOUT parameter
SET incr_param = incr_param + 1;
END;
Run Code Online (Sandbox Code Playgroud)
从终端运行mysql -u root -p.
el@apollo:~$ mysql -u root -p
Enter password:
Run Code Online (Sandbox Code Playgroud)
更改到您的数据库:
mysql> use yourdb;
Reading table information for completion of table and column names
Run Code Online (Sandbox Code Playgroud)
创建一个变量以提供给您调用的存储过程msg.
mysql> select 'ricksays' into @msg;
Query OK, 1 row affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
创建存储过程:
mysql> delimiter //
mysql> create procedure foobar (inout msg varchar(100))
-> begin
-> set msg = concat(@msg, " never gonna let you down");
-> end//
Run Code Online (Sandbox Code Playgroud)
设置分隔符:
mysql> delimiter ;
Run Code Online (Sandbox Code Playgroud)
调用存储过程,传入变量.
mysql> call foobar(@msg);
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
好的,现在看看它是否有效:
mysql> select @msg;
+-----------------------------------+
| @msg |
+-----------------------------------+
| ricksays never gonna let you down |
+-----------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
好吧它工作,它加入了一起.因此,您定义了一个变量msg,将该变量传递给名为foobar的存储过程,并且@msg由foobar写入.
INOUT参数的目的是什么.你可以用它来解决问题.
| 归档时间: |
|
| 查看次数: |
18071 次 |
| 最近记录: |