存储过程在数据库中测试

    想必存储过程大家都非常熟悉了,做系统的时候适当的使用存储过程会起到事半功倍的效果,那么判断你写的存储过程是否正确呢?除了写入系统进行运行以外,还有什么方法呢?在数据库中同样可以进行测试,这样就会减少一些麻烦,避免在系统运行出错再返回数据库修改的弊端,避免了时间的浪费,一寸光阴一寸金,寸金难买寸光阴,我们可以从这里节约一些时间,珍惜时间从这里做起,让我们一起看看吧!

举例说明一下

【实现的功能】

有相同的数据,直接返回(返回值:0);
有主键相同,但是数据不同的数据,进行更新处理(返回值:2);
没有数据,进行插入数据处理(返回值:1)。

【步骤】

创建表

1、首先要有表,先来创建一张表Student,加入里面有数据


创建存储过程

2、然后进行创建存储过程

<span style="font-family:KaiTi_GB2312;font-size:18px;">Create proc sp_Student 
        @CardNo char(10), 
        @S<span style="font-family:KaiTi_GB2312;">tudent</span>Name char(<span style="font-family:KaiTi_GB2312;">1</span>0), 
        @<span style="font-family:KaiTi_GB2312;">StudentNo </span>char(<span style="font-family:KaiTi_GB2312;">10</span>), 
        @<span style="font-family:KaiTi_GB2312;">Sex char(10)</span>, 
        @rtn int output 
    as 
    declare 
        @tmpName char(<span style="font-family:KaiTi_GB2312;">1</span>0), 
<span style="font-family:KaiTi_GB2312;">        @tmpStudentNo char(10)</span>,
        @tmpSex char(<span style="font-family:KaiTi_GB2312;">10</span>)               
        if exists(select * from Student where CardNo =@No)<span style="font-family:KaiTi_GB2312;">//如果存在此卡号的学生信息</span> 
            begin <span style="font-family:KaiTi_GB2312;">//如果有进行查找此卡号的学生信息是不是等于临时定义的信息</span>
                select @tmpStudentName=StudentName,@tmpSex=Sex,@tmp<span style="font-family:KaiTi_GB2312;">Student</span>No=<span style="font-family:KaiTi_GB2312;">Student</span>No from Student where No=@No 
<span style="font-family:KaiTi_GB2312;"> </span>                if ((@tmpName=@Name) and (@tmpSex=@Sex) and (@tmpAge=@Age)) //如果相同的话,则<span style="font-family:KaiTi_GB2312;">表示有数据</span>
                    begin 
                        set @rtn=0   <span style="font-family:KaiTi_GB2312;">//</span>有相同的数据,直接返回值 
                    end 
                 else <span style="font-family:KaiTi_GB2312;">//如果没有,需要进行更新,更新为对应了临时数据</span>
                    begin 
                        update Student set Name=@Name,Sex=@Sex,Age=@Age where No=@No 
                        set @rtn=2   <span style="font-family:KaiTi_GB2312;">//</span>有主键相同的数据,进行更新处理 
                    end 
            end 
        else //如果不<span style="font-family:KaiTi_GB2312;">存在此卡的信息,则插入一行信息</span>
            begin 
                insert into Student values(@CradNo,@StudentName,@<span style="font-family:KaiTi_GB2312;">StudentNo</span>,@Age) 
                set @rtn=1    <span style="font-family:KaiTi_GB2312;">//</span>没有相同的数据,进行插入处理 
            end 
</span>

程序中调用

3、在程序中调用存储过程

<span style="font-family:KaiTi_GB2312;font-size:18px;">declare @rtn int 
    exec sp_Student '<span style="font-family:KaiTi_GB2312;">001</span>','张三','<span style="font-family:KaiTi_GB2312;">1307014</span>',<span style="font-family:KaiTi_GB2312;">'男'</span>,@rtn output     
    if @rtn=0 
        print '已经存在相同的。' 
    else if @rtn=1 
        print '不存在数据,但插入成功。' 
    else 
        print <span style="font-family:KaiTi_GB2312;">'数据</span>更新成功' </span>

【小结】

    这样就可以实现存储过程的测试了,万事开头难,起初存储过程很难,害怕不想动手去做,其实只要Just do it,一切都不是问题,现在我想说:不要在没有做之前就说自己不能,要先去做,做了之后才有资格去发言!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值