语法:
CREATE PROCEDURE 存储过程名字
(
[IN] 参数1参数类型,
OUT参数2 参数类型
)
BEGIN
程序代码块
END;
IN:代表输入参数(如果没有注明, 参数默认的类型为 in)
OUT:输出参数,不管有没有传值里面都是null
IN OUT;既可以做为输入参数,也可以做为输出参数
MySQL 存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”
CALL 储存过程名称(参数列表)
drop procedure 储存过程名称 ;
show create procedure 过程名称;
用储存过程来实现向t_user表中插入一条数据,首先创建一个储存过程。
DELIMITER // -- 修改sql语句的结束符为//
create PROCEDURE pro1 (
in u_id int, -- -- 输入参数 用户id,
in u_name varchar(30), -- 输入参数用户name, 字符串类型必须要指定长度
in u_age int -- -- 输入参数用户年龄
)
BEGIN
-- 执行插入操作
insert into t_user(id,name,age) values(u_id,u_name,u_age);
end;
//
DELIMITER ; -- 结束符修改成;
调用储存过程pro1
例:定义一个过程传递两个参数,过程里面把这两个参数相加的结果返回出来
create PROCEDURE pro4(
in a int, -- 输入参数
in b int, -- 输入参数
out c int -- 输出参数
)
BEGIN
-- 结果相加赋值给c
set c = a+b;
END;
调用储存过程
把调用过程的返回值用@sum来接收,最后显示@sum的值就可以看到过程的返回值了,@后面跟个名字,在MySQL中表示自定义变量
例:根据员工编号查询员工名称,用储存过程来实现。
CREATE PROCEDURE pro2(
IN u_id INT, -- 输入参数
OUT u_name VARCHAR(30) -- 输出参数
)
BEGIN
-- 执行查询语句,将name的值赋给u_name
select u.`name` into u_name from t_user u where u.id = u_id;
END;
调用储存过程
create PROCEDURE pro5(
inout x int -- 即可作输入参数,也可作输出参数
)
BEGIN
set x = x+10;
end;
调用por5储存过程
create PROCEDURE pro6(
x int,
inout y int,
out z int
)
BEGIN
set z = x+y;
set y = x;
END
调用储存过程
因篇幅问题不能全部显示,请点此查看更多更全内容