mysql存储过程实例
2012-03-31 19:48
288 查看
首先创建表 test
以下实例在客户端上运行,如果在DOS上运行,请加“DELIMITER //” 后再创建存储过程如:
定义:
调用:
结果:
如果存储过程中只有1条语句,可以去掉BEGIN 和END
例(1): 根据变量名插入数据
定义:
调用:
结果:
例(2): 两数相减
定义:
调用:
结果:
例(3): 参数为in,可以省略in,这种类型的参数像传值调用,不会改变原参数的值。
定义:
调用:
结果:
如果参数为OUT ,结果为:
例(4) case when 语句
定义:
调用:
结果:
调用:
结果:
例(5): while 语句
定义:
调用:
结果:
例(6): repeat 语句
定义:
调用:
结果:4-6的记录被删除了
CREATE TABLE IF NOT EXISTS test ( id INT(4) PRIMARY KEY AUTO_INCREMENT, name CHAR(20) );
以下实例在客户端上运行,如果在DOS上运行,请加“DELIMITER //” 后再创建存储过程如:
定义:
DELIMITER // CREATE PROCEDURE simple_proc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM test; END; //
调用:
DELIMITER ; CALL simple_proc(@var); SELECT @var AS number;
结果:
如果存储过程中只有1条语句,可以去掉BEGIN 和END
DELIMITER // CREATE PROCEDURE simple_proc (OUT param1 INT) SELECT COUNT(*) INTO param1 FROM test; //
例(1): 根据变量名插入数据
定义:
CREATE PROCEDURE proc_insert_test(IN name INT) BEGIN DECLARE my_name CHAR(20); IF name = 1 THEN SET my_name = 'java'; ELSE SET my_name = 'c'; END IF; INSERT INTO test(name) VALUES(my_name); END;
调用:
SET @var = 1; CALL proc_insert_test(@var); CALL proc_insert_test(2);
结果:
例(2): 两数相减
定义:
CREATE PROCEDURE proc_sub(in a INT,in b INT) BEGIN DECLARE C INT DEFAULT 0; IF a IS NULL THEN SET a = 0; END IF; IF b IS NULL THEN SET b = 0; END IF; SET c = a - b; SELECT c as c; END;
调用:
CALL proc_sub(5,1); CALL proc_sub(1,4);
结果:
例(3): 参数为in,可以省略in,这种类型的参数像传值调用,不会改变原参数的值。
定义:
CREATE PROCEDURE proc_in(IN var INT) SET var = 3;
调用:
SET @v = 1; CALL proc_in(@v); SELECT @v;
结果:
如果参数为OUT ,结果为:
例(4) case when 语句
定义:
CREATE PROCEDURE proc_case(param INT) BEGIN DECLARE i INT; SET i = param + 1; CASE i WHEN 0 THEN INSERT INTO test(name) VALUES('perl'); WHEN 1 THEN UPDATE test SET name = 'javascript' WHERE name = 'perl'; ELSE SELECT * FROM test; END CASE; END;
调用:
CALLproc_case(-1); CALL proc_case(1);
结果:
调用:
CALL proc_case(-1); CALL proc_case(0);
结果:
例(5): while 语句
定义:
CREATE PROCEDURE proc_while(param INT) BEGIN DECLARE i INT DEFAULT 0; WHILE i<param DO INSERT INTO test(name) VALUES('c#'); SET i = i+1; END WHILE; END;
调用:
CALL proc_while(3); SELECT * FROM test;
结果:
例(6): repeat 语句
定义:
CREATE PROCEDURE proc_repeat(param INT) BEGIN DECLARE i INT DEFAULT 0; SELECT count(*) INTO i FROM test; REPEAT DELETE FROM test WHERE id = i; SET i = i-1; UNTIL i = 3 END REPEAT; END;
调用:
CALL proc_repeat(null); SELECT * FROM test;
结果:4-6的记录被删除了
相关文章推荐
- mysql 存储过程实例
- php调用mysql存储过程实例分析
- mysql存储过程语法及实例
- PHP调用MYSQL存储过程实例
- Mysql存储过程中游标的用法实例
- MySQL存储过程实例——实现查询数据表,有则更新无则插入
- mysql的存储过程、游标 、事务实例详解
- Mysql存储过程实例解析
- mysql存储过程用法实例分析
- MySql 存储过程实例(附完整注释)
- MySql 存储过程实例(附完整注释)
- php mysql 存储过程实例
- MySql存储过程实例及完整注释
- MySQL 有输入输出参数的存储过程实例
- mysql存储过程实例
- mysql存储过程实例1
- MYSQL存储过程中使用游标的实例
- 调用MYSQL存储过程实例
- MySql(14)------mysql存储过程使用实例
- JDBC基于MVC架构项目实例-实现对MySQL数据表的增删改查、调用数据表中的存储过程和函数