如何在存储过程中实现插入更新数据

简介:

存储过程的功能非常强大,在某种程度上甚至可以替代业务逻辑层,接下来就一个小例子来说明,用存储过程插入或更新语句。
  1、数据库表结构

  所用数据库为Sql Server2008。

  2、创建存储过程

  (1)实现功能:

  有相同的数据,直接返回(返回值:0);

  有主键相同,但是数据不同的数据,进行更新处理(返回值:2);

  没有数据,进行插入数据处理(返回值:1)。

  根据不同的情况设置存储过程的返回值,调用存储过程的时候,根据不同的返回值,进行相关的处理。

  (2)下面编码只是实现的基本的功能,具体的Sql代码如下:

Create proc sp_Insert_Student

@No char(10), 
@Name varchar(20), 
@Sex char(2), 
@Age int, 
@rtn int output 

as
declare

@tmpName varchar(20), 
@tmpSex char(2), 
@tmpAge int 
 
if exists(select * from Student where No=@No) 
    begin 
        select @tmpName=Name,@tmpSex=Sex,@tmpAge=Age from Student where No=@No 
        if ((@tmpName=@Name) and (@tmpSex=@Sex) and (@tmpAge=@Age)) 
            begin 
                set @rtn=0   --有相同的数据,直接返回值 
            end 
        else 
            begin 
                update Student set Name=@Name,Sex=@Sex,Age=@Age where No=@No 
                set @rtn=2   --有主键相同的数据,进行更新处理 
            end 
    end 
else 
    begin 
        insert into Student values(@No,@Name,@Sex,@Age) 
        set @rtn=1    --没有相同的数据,进行插入处理 
    end

  3、调用存储过程

  这里在Sql Server环境中简单的实现了调用,在程序中调用也很方便。

  具体的代码如下:

declare @rtn int
exec sp_Insert_Student '1101','张三','男',23,@rtn output

if @rtn=0

print '已经存在相同的。' 

else if @rtn=1

print '插入成功。' 

else

print '更新成功'

  一个存储过程就实现了3中情况,而且效率很高,使用灵活。希望对大家有所帮助。

  在成长学习的过程中,我会不断发一些自己的心得体会,和大家共享。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
123 0
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
存储 SQL 关系型数据库
18. Mysql 存储过程,实现动态数据透视
18. Mysql 存储过程,实现动态数据透视
99 1
|
存储 关系型数据库 分布式数据库
PolarDB-X最佳实践系列(五):使用通义千问和存储过程快速生成测试数据
我们在测试数据库性能的过程中,通常需要生成一批测试数据。 以前,一般要写一段程序或者脚本来完成这项工作,但现在是2024年啦!时代变了!
PolarDB-X最佳实践系列(五):使用通义千问和存储过程快速生成测试数据
|
存储 SQL Oracle
Oracle存储过程:数据王国的魔法师
【4月更文挑战第19天】Oracle存储过程是封装复杂SQL操作的魔法工具,存储在数据库中以便重复调用。它们提供高效执行和安全,类似于预编译的程序。创建存储过程涉及定义名称和参数,如示例所示,创建一个根据员工ID获取姓名和薪资的`get_employee_info`过程。调用存储过程可提高代码可读性和性能,使数据库管理更为便捷。
|
存储 关系型数据库 MySQL
MySQL存储过程——批量插入数据
MySQL存储过程——批量插入数据
1468 0
MySQL存储过程——批量插入数据
SqlServer存储过程应用二:分页查询数据并动态拼接where条件 (下)
SqlServer存储过程应用二:分页查询数据并动态拼接where条件 (下)
|
存储 SQL 数据库连接
SqlServer存储过程应用二:分页查询数据并动态拼接where条件 (上)
SqlServer存储过程应用二:分页查询数据并动态拼接where条件
|
存储 程序员
SQLServer存储过程自制数据字典
SQLServer存储过程自制数据字典
|
存储 关系型数据库 MySQL
【MySQL】使用存储过程+IF控制语句批量添加数据
【MySQL】使用存储过程+IF控制语句批量添加数据
334 0
【MySQL】使用存储过程+IF控制语句批量添加数据
|
存储 关系型数据库 MySQL
mysql数据库编写存储过程实现批量插入1000万条数据
mysql数据库编写存储过程实现批量插入1000万条数据
840 0
mysql数据库编写存储过程实现批量插入1000万条数据