存储过程之七—存储过程增删改查

简介:   对于以下存储过程,表结构如下: -- ---------------------------- -- Table structure for person -- ---------------------------- DROP TABLE IF EXISTS `person`; ...

  对于以下存储过程,表结构如下:

-- ----------------------------
-- 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,则删除成功。执行结果如下:

 

目录
相关文章
|
7月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
660 77
|
7月前
|
XML 数据库 Android开发
Android数据库的使用(增删改查)
本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。
215 5
|
7月前
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
229 0
Android常用的room增删改查语句(外部数据库)
|
10月前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
12月前
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
418 13
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
473 5
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
189 5
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
114 1
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法