想必存储过程大家都非常熟悉了,做系统的时候适当的使用存储过程会起到事半功倍的效果,那么判断你写的存储过程是否正确呢?除了写入系统进行运行以外,还有什么方法呢?在数据库中同样可以进行测试,这样就会减少一些麻烦,避免在系统运行出错再返回数据库修改的弊端,避免了时间的浪费,一寸光阴一寸金,寸金难买寸光阴,我们可以从这里节约一些时间,珍惜时间从这里做起,让我们一起看看吧!
举例说明一下
【实现的功能】
有相同的数据,直接返回(返回值: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,一切都不是问题,现在我想说:不要在没有做之前就说自己不能,要先去做,做了之后才有资格去发言!