MySQL存储过程详解 mysql 存储过程

来源:互联网 发布:max+守望先锋数据 编辑:程序博客网 时间:2024/06/15 18:58

/*创建存储过程*/
/*创建存储过程的时候要事先指定一个结束标记*/
DELIMITER $
CREATE PROCEDURE test_pro1()
BEGIN
SELECT * FROM address;
END $
/*调用存储过程*/CALL test_prol();
DELIMITER $
CREATE PROCEDURE test_pro1()
BEGIN
SELECT * FROM address;
SELECT * FROM book;
END $
CALL test_pro2();
/*参数带有参数的存储过程
IN:表示输入参数,可以携带数据到存储过程中去
OUT:表示返回参数,可以从存储过程中返回结果
INOUT:表示输入输出参数,既可以输入参数,又可以返回结果
*/
DELIMITER $
CREATE PROCEDURE test_pro_in(IN id INT)
BEGIN
select * from address where id=id;
END $
CALL test_pro_in(7369);
/*带有多个输入参数的存储过程
*/\
DELIMITER $
CREATE PROCEDURE test_pro_inmore(IN id INT,IN id2 INT)
BEGIN
SELECT * FROM address WHERE empno=id OR empno=id2;
END $
 CALL test_pro_inmore(7369,7499);
DELIMITER $
CREATE PROCEDURE test_pro_out(OUT num INT)
BEGIN
/*给输出的参数赋值,关键字set*/
SET num=10;
END $ 
CALL test_pro_out(@val);//这个地方的变量是会话变量,会话变量是以@符号开头
SELECT @val;
/*mysql数据库中的变量:1、全局变量2、局部变量3、会话变量*/SHOW VARIABLES;//查询所有的全局变量
SHOW VARIABLES LIKE 'char%'  //模糊查询全局变量
select character_set_client;//单个查询的全局变量
set @vail='peter';//定义一个会话变量的时候,一定要指定值!
select @vail;
//局部变量的值在begin和end之间DELIMITER $
CREATE PROCEDURE test_pro_loc()
BEGIN
DECLARE i INT DEFAULT 1;
END $
 //带有输入输出参数的存储过程,关键字inout
DELIMITER $
CREATE PROCEDURE test_pro_inout(INOUT n INT)
BEGIN
SET n=100;
END $
SET @aaaaa=10000;
SELECT  @aaaaa;
CALL test_pro_inout(@aaaaa);
SELECT @aaaaa;