存储过程之七—存储过程增删改查
来源:互联网 发布:泛伊斯兰主义知乎 编辑:程序博客网 时间:2024/05/16 19:19
对于以下存储过程,表结构如下:
-- ------------------------------ Table structure for person-- ----------------------------DROP TABLE IF EXISTS `person`;CREATE TABLE `person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;-- ------------------------------ Records of person-- ----------------------------INSERT INTO `person` VALUES ('1', 'lisi', '21', 'li123456');INSERT INTO `person` VALUES ('2', 'zhangsan', '23', 'zhang123456');
一、增加
对于mysql来说,默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务。 所以,如果存储过程中有两个修改语句,那么这两个语句也是独立的。第一条执行成功后第二条执行失败的时候,第一条语句的事务不会回滚。所以为了保证这两条语句的事务的同步,就需要加上START TRANSACTION;与 COMMIT;块,并且把这两条语句放在这个块之中。
DROP PROCEDURE IF EXISTS proc_person_insert;CREATE PROCEDURE proc_person_insert( IN uusername VARCHAR(255), IN uage INT(11), IN upassword VARCHAR(255), OUT flag INT(11))BEGIN START TRANSACTION; INSERT INTO person (username, age, password) values (uusername, uage, upassword); SET flag = ROW_COUNT(); -- 保存sql语句操作后影响的行数 COMMIT; END; CALL proc_person_insert('lisi12', 22, '123456', @flag);SELECT @flag;
@falg 值为1,则插入成功。执行结果如下:
二、修改
DROP PROCEDURE IF EXISTS proc_person_update;CREATE PROCEDURE proc_person_update( IN uid INT(11), IN uusername VARCHAR(255), IN uage INT(11), IN upassword VARCHAR(255), OUT flag INT(11))BEGIN START TRANSACTION; UPDATE person SET username = uusername, age = uage, password = upassword WHERE id = uid; SET flag = ROW_COUNT(); -- 保存sql语句操作后影响的行数 COMMIT;END;CALL proc_person_update(1, 'zhaoliu', 20, 'zhao123', @flag);SELECT @flag;
@falg 值为1,则更新成功。执行结果如下:
三、查询
1、根据id查询单个
此时将返回结果集。
DROP PROCEDURE IF EXISTS proc_person_findOne;CREATE PROCEDURE proc_person_findOne( IN uid INT(11))BEGIN SELECT username, age, password FROM person WHERE id = uid;END;CALL proc_person_findOne(1);
执行结果如下:
2、查询所有
返回多个结果集
DROP PROCEDURE IF EXISTS proc_person_findAll;CREATE PROCEDURE proc_person_findAll()BEGIN SELECT id, username, age, password FROM person;END;CALL proc_person_findAll();
执行结果如下:
四、删除
DROP PROCEDURE IF EXISTS proc_person_del;CREATE PROCEDURE proc_person_del( IN uid INT(11), OUT flag INT(11))BEGIN START TRANSACTION; DELETE FROM person where id = uid; SET flag = ROW_COUNT(); COMMIT;END;CALL proc_person_del(3, @flag);SELECT @flag;
@falg 值为1,则删除成功。执行结果如下:
阅读全文
0 0
- 存储过程之七—存储过程增删改查
- Oracle 存储过程之增删改查
- 存储过程增删改查
- oracle存储过程之数据增删查改及调用
- oracle 存储过程实现增删改查
- sqlserver存储过程的增删改查
- oracle存储过程增删改查
- jdbc增删改查操作 存储过程
- informix存储过程之增删查
- 触发器—增删改—存储过程
- 同步增删改存储过程
- 使用存储过程进行基本的增删改查
- SQL存储过程详解-通用型增删改查
- oracle-扫盲贴:存储过程实现增删改查
- oracle-扫盲贴:存储过程实现增删改查
- jdbc详解(增删改查、事务、存储过程)
- oracle存储过程学习(二)-增删改查
- oracle-扫盲贴:存储过程实现增删改查
- [转自Oracle官方技术博客]如何在asm上定位数据块
- using learning rate schedules for deep learning models in python with keras
- 雄关漫道真如铁,而今迈步从头越
- 第三周 建立“顺序表”算法库
- 自动化测试资料整理包括(python、appium、selenium、RF)
- 存储过程之七—存储过程增删改查
- Kafka在Linux环境下搭建过程
- 面向对象设计讨论:有状态类还是无状态类?这是个难题
- nginx配置
- 运维架构服务监控Open-Falcon
- VMware12-Centos7-Oracle12C(一)--未完
- eigen 3.3.4在VS 2017 配置
- vmware tools ,/mnt/hgfs 下没有共享文件夹,解决办法
- 《剑指offer》刷题笔记(代码完整性):调整数组顺序使奇数位于偶数前面