Access 存储过程

http://access911.net/index.asp?board=4&recordid=79FAB21E12DC

问题:

 ACCESS 中是否存在存储过程或者视图?

 


回答:

 
先来看什么是存储过程,如果你知道什么是存储过程的定义,可以跳过蓝色部分看下面
存储过程
在使用 Microsoft® SQL Server™ 2000 创建应用程序时,Transact-SQL 编程语言是应用程序和 SQL Server 数据库之间的主要编程接口。使用 Transact-SQL 程序时,可用两种方法存储和执行程序。可以在本地存储程序,并创建向 SQL Server 发送命令并处理结果的应用程序;也可以将程序在 SQL Server 中存储为存储过程,并创建执行存储过程并处理结果的应用程序。 

 

SQL Server 中的存储过程与其它编程语言中的过程类似,原因是存储过程可以: 

接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理。


包含执行数据库操作(包括调用其它过程)的编程语句。 


向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因)。 
可使用 Transact-SQL EXECUTE 语句运行存储过程。存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中。

使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有: 

允许模块化程序设计。 
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。

允许更快执行。 
如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。

减少网络流量。 
一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。

可作为安全机制使用。 
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。

SQL Server 存储过程是用 Transact-SQL 语句 CREATE PROCEDURE 创建的,并可用 ALTER PROCEDURE 语句进行修改。存储过程定义包含两个主要组成部分:过程名称及其参数的说明,以及过程的主体(其中包含执行过程操作的 Transact-SQL 语句)。

 

 

Access 的 MDB / MDE 中存在类似存储过程得概念(建立时也可以使用 DDL 语句的 create procedure 语句建立),但是叫参数查询,并且一个参数查询只支持一条 JET SQL 语句,因而 JET SQL 不存在程序流控制语句,所有的程序流控制都交由 VBA 控制。

详细内容请参考:

《ado构建参数一例》
http://access911.net/index.asp?board=4&recordid=71FAB51E12DC
<script src="/googlejs.js" type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-6733870115125334&dt=1212462765390&lmt=1212462765&output=html&slotname=5294286987&correlator=1212462765390&url=http%3A%2F%2Faccess911.net%2Findex.asp%3Fboard%3D4%26recordid%3D79FAB21E12DC&frm=0&cc=194&ga_vid=1606076678556886000.1212462765&ga_sid=1212462765&ga_hid=1584713395&flash=9.0.115.0&u_h=1024&u_w=1280&u_ah=990&u_aw=1280&u_cd=32&u_tz=480&u_his=1&u_java=true" frameborder="0" width="728" scrolling="no" height="90" allowtransparency="allowtransparency">

《如何构建参数查询?》
http://access911.net/index.asp?board=4&recordid=72FAB21E15DC
<script src="/googlejs.js" type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-6733870115125334&dt=1212462765468&lmt=1212462765&prev_slotnames=5294286987&output=html&slotname=5294286987&correlator=1212462765390&url=http%3A%2F%2Faccess911.net%2Findex.asp%3Fboard%3D4%26recordid%3D79FAB21E12DC&frm=0&cc=194&ga_vid=1606076678556886000.1212462765&ga_sid=1212462765&ga_hid=1584713395&flash=9.0.115.0&u_h=1024&u_w=1280&u_ah=990&u_aw=1280&u_cd=32&u_tz=480&u_his=1&u_java=true" frameborder="0" width="728" scrolling="no" height="90" allowtransparency="allowtransparency">

在Access的MDB中可以运行JET SQL 的 DDL 语句: create procedure Name as .... 来创建参数查询(存储过程)或者用 create view name as .... 来创建查询(视图)
请注意:再次重申,在 ACCESS 的“查询”标签中直接建立一个查询,并将Create procedure ... 语句或者 create view... 语句输入进去是会产生错误的,只有在“模块”标签中建立一个模块,并输入

sub 过程名()
    dim strsql as string
    strsql="create view ..."
    currentproject.connection.execute strsql
end sub

按 F5 才能运行。这是因为 JET SQL 的多数 DDL 语句需要通过 ADODB.CONNECTION 这个对象的EXECUTE 方法来执行的。

如何运行 JET SQL 语句请参考:
《如何运行一段 jet sql 代码》
http://access911.net/down/eg/swf/runsql.swf
<script src="/googlejs.js" type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-6733870115125334&dt=1212462765546&lmt=1212462765&prev_slotnames=5294286987%2C5294286987&output=html&slotname=5294286987&correlator=1212462765390&url=http%3A%2F%2Faccess911.net%2Findex.asp%3Fboard%3D4%26recordid%3D79FAB21E12DC&frm=0&cc=194&ga_vid=1606076678556886000.1212462765&ga_sid=1212462765&ga_hid=1584713395&flash=9.0.115.0&u_h=1024&u_w=1280&u_ah=990&u_aw=1280&u_cd=32&u_tz=480&u_his=1&u_java=true" frameborder="0" width="728" scrolling="no" height="90" allowtransparency="allowtransparency">

Access 的 ADP/ADE (数据项目)中本来就是调用 MS SQLSERVER 作为后端,因此在 ADP 中说的存储过程与 SQL SERVER 中的存储过程是一个概念。

Access 的 MDB / MDE 中存在类似视图得概念(建立时也可以使用 DDL 语句的 create VIEW 语句建立),但是叫选择查询,并且一个选择查询只支持一条 JET SQL 语句,因而 JET SQL 不存在程序流控制语句,所有的程序流控制都交由 VBA 控制。

Access 的 ADP/ADE (数据项目)中本来就是调用 MS SQLSERVER 作为后端,因此在 ADP 中说的视图与 SQL SERVER 中的视图是一个概念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值