由存储过程谈“配角”
上一篇 / 下一篇 2012-07-19 09:27:44 / 个人分类:数据库
-C_E!KnK+N0 存储过程是一组预先编译好的sql语句。将他放在服务器上面,由用户通过指定存储过程的名字来执行它。51Testing软件测试网eE+}GG
2V;O3C-kX^&R0 存储过程的优点:51Testing软件测试网E_f v"WX
51Testing软件测试网5J8T%Uy!j$y,[Z/Z封装——可用于操作数据库对象的方法,用户只需要知道它的输入输出参数并理解其目的即可。
,Xy7CjaMd}0&@~/RJ$`0 改善性能——已经预先编译
k _YrEh]2[01W`re,]xg0 减少网络流量——只返回最后的结果集
e y:ax})kX/V {3P051Testing软件测试网 uvEuw重要性——针对复杂逻辑,应用已经测试号的存储过程,不容易发生错误。
P M4uI&r7wYc051Testing软件测试网1z0o:@^:TH5]安全性——如果数据库拥有者DBO或者系统管理员SA编译并保存了存储结构,存储过程就有了对它使用的数据库对象的所有访问权限。因此系统管理员可以向单独的用于授予对数据对象的最小访问权限,而不是直接允许用户使用数据库对象。51Testing软件测试网;wE/_z3c,^D&u
51Testing软件测试网#|s7["tu$n s这次项目开发中运用了不少的存储过程,中间遇到了一个小问题,大家可以看看:
_9W;a:Ip"c03D_pM2c*jNV7mw0 事情是这样的:我想根据卡号、教师编号、教师姓名、联系电话这四个条件查询教师编号,这四个条件可以不存在,可以只存在一个,可以只存在两个,可以只存在三个,可以存在四个。开始我写的存储过程是这样的
dH!oP;w&Q0?%KI a|-iMi0<SPAN style="FONT-SIZE: 24px">CREATE PROCEDURE [dbo].[procCardByMore]</SPAN>51Testing软件测试网K!x$PJVi:t IF(@cardNo <>'')51Testing软件测试网;q }DO+o,@Kdc "`dm)V7R1jz0IF(@TeacherID <>'') IF(@Name <>'')51Testing软件测试网Q+e`ld7ToX 3}E:_vjPV+@0IF(@Name <>'')51Testing软件测试网
IaRWS_4o,Qx? |