设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 6578|回复: 7
打印 上一主题 下一主题

存储过程与函数的区别(摘录)

[复制链接]
1#
发表于 2010-9-26 15:33:48 | 显示全部楼层
存储过程还有一个好外就是它是在服务器上运行的, 对前台的资源要求少
2#
发表于 2010-9-26 21:28:49 | 显示全部楼层
回复 todaynew 的帖子

其实和VBA的模块的功能类似,只不它是运行在服务器的而且代码只能是SQL语句,由于它是运行在服务器端的,客户端就不需耗用太多的系统资源,只需发出执行命令即可,如下面的存储过程:
Create Procedure "DelStudent"
(@Sid int)
AS
      --删除学习成绩
      Delete FROM 学习成绩 WHERE StudentID=@Sid
  --删除值日记录
   Delete FROM 值日记录 WHERE StudentID=@Sid
     --删除学生资料
   Delete FROM Students WHERE Sid=@Sid
Return

上面这个存储过程用来删除一个学生资料以及他的学生成绩记录和值日记录;其实这些代码也是可以写在VBA中的,但存储过程是经过SQL优化编译的,执行效率比较高,而且网络通信量相对也比较少,比如上面这个存储过程要是写在VBA中,那么它必须将这些代码的字符全部通过网络传向服务器上执行,而用存储过程,执行时只需下面一行就够了:
currentproject.connection.execute("EXEC  DelStudent  @Sid="& me.Sid)
也就是说真正传用服务器的只有("EXEC  DelStudent  @Sid=n"这么些内容了,所以对网络的占用就相当的少了

以上为个人愚见,不对之处,还请诸位多多包涵
   
3#
发表于 2010-9-27 20:40:34 | 显示全部楼层
本帖最后由 zyp 于 2010-9-27 20:50 编辑

是的
虽然存储过程是保存在SQL server中的,但通过ADP可直接连接到SQL Server,也就是说可以在ADP中直接操作SQL Server的表\视图\存储过程,
存储过程很强大,但有时也不够灵活,所以我一般将存储过程和VBA代码结合起来,这样就可以最大发挥各自的长处.

不过对ADP的应用也不是很久,所以很多问题还在摸索当中

ADP相对MDB来讲,确实存在很多优势,比如:
(1)可以设定"入库日期"为当前的系统日期且不可更改,如果在MDB中,用户只要修改一下本机的日期就可以跳过这个限制了,但在ADP中,可将"入库日期"设为服务器的日期,本地日期再怎么改都没用,除非这个用有权限可以去更改服务器的日期,否则只能乖乖地用系统默认的服务器日期
(2)用户虽然可以通过连接功能的导入来导出ADP中的数据,但相对MDB而言, 对于导出的ADP数据的任何更改都不会影响到SQL Server中的数据,而MDB中如果是采用链接表的话,导出了即可对源表做任何的更改;
(3)在多用户情况下,运行速度比MDB要快
(4)不论数据表有没有用户在使用,可以随时对表的结构进行更改,而MDB的表一旦使用中,就不能做更改;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-14 07:58 , Processed in 0.082274 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表