关于此主题请参考:
新手来看:ACCESS中是否存在存储过程或者视图?《查询》
http://access911.net/index.asp?u1=a&u2=79FAB21E12DC
----------------------
在Access的MDB中可以运行JET SQL 的 DDL 语句: create procedure Name as .... 来创建参数查询(存储过程)或者用 create view name as .... 来创建查询(视图)
如何运行 JET SQL 语句请参考:
《如何运行一段 jet sql 代码》
http://access911.net/eg/swf/runsql.swf
-------------------------
必须使用 CURRENTPROJECT.CONNECTION.EXECUTE "CREATE VIEW... " 来建立
jet sql是否支持程序流分支?是否能像存储过程那样使用变量?能否多行一起执行?
作者:cg1 摘自:access911.net 编辑:cg1 更新日期:2004-8-10 浏览人次:597
专题地址:
http://access911.net/?kbid;72FAB51E17DCE9F3
简述:
1、jet sql 是否支持程序流分支?
2、JET SQL 是否能像 T-SQL 存储过程那样使用变量?
3、jet sql 能否多行一起执行?
阅读前需掌握:
熟练掌握 ACCESS 操作;熟练掌握 VBA 编程;基本了解 JET SQL DDL 语句
难度等级:
85
问题:
1、jet sql 是否支持程序流分支?
2、JET SQL 是否能像 T-SQL 存储过程那样使用变量?
3、
if exists (select * from mruser where userid='12')
begin
update mruser set upass="sss",uname="ww", userid="11"
end else
insert into mruser (userid,upass,uname) values ("11","sss","ww")
这条SQL语句转换为ACCESS该怎么写
4、ACCESS查询是否可以连续执行多条 JET SQL 语句,是否可以将多条JET SQL 语句写在一个查询里面
回答:
1、Access 的 MDB / MDE 中存在类似存储过程得概念(建立时也可以使用 DDL 语句的 create procedure 语句建立),但是叫参数查询,并且一个参数查询只支持一条 JET SQL 语句,因而 JET SQL 不存在程序流控制语句,所有的程序流控制都交由 VBA 控制。
也就是说 T-SQL 中的 IF 以及 CASE 语句在 JET SQL 中不存在,但是部分功能可以用 IIF 函数以及 SWITCH 函数代替,具体内容请参考 ACCESS 帮助。
2、JET SQL中也可以定义“变量”,但是这个变量和 T-SQL 中的变量是不同的概念,因此在 JET SQL 中被称为“参数”
关于此主题请参考:
《查询》ado构建参数一例
http://access911.net/index.asp?u1=a&u2=71FAB51E12DC
关于此主题请参考:
《查询》如何构建参数查询?
http://access911.net/index.asp?u1=a&u2=72FAB21E15DC
关于此主题请参考:
T-SQL、VBA、JET SQL中参数的构建《查询》
http://access911.net/index.asp?u1=a&u2=79FAB51E1ADC
3、ACCESS 不支持将两条 JET SQL 连续写在一个查询里面以达到连续执行的目的。上述语句由于涉及到两条不同的 JET SQL 语句,因此无法写在一个查询里面,但是你可以通过 VBA 来控制程序流
Dim Rs As New ADODB.Recordset
Dim strSQL As String
strSQL = "select * from mruser where userid='12'"
Rs.Open strSQL, CurrentProject.Connection, 1, 1
'这里的 CurrentProject.Connection 为 ACCESS 特有的
'对象,在 VB 中请用 adodb.connection 对象代替
If Rs.EOF And Rs.BOF Then
'上面这个 IF 在 ACCESS 环境中完全可以用 DLOOKUP 函数代替,
'具体内容请参考帮助,搜索关键字“DLOOKUP”
strSQL = "insert into mruser (userid,upass,uname) values ('11','sss','ww')"
Else
strSQL = "update mruser set upass='sss',uname='ww', userid='11'"
End If
CurrentProject.Connection.Execute strSQL
4、前面已经说过,ACCESS 查询只支持单条的 JET SQL 语句,因此如果你要执行多条语句请使用 VBA 调用 ADO 或者 DAO 来完成,比如:
Dim strSQL As String
strSQL = "insert into mruser (userid,upass,uname) values ('11','sss','ww')"
CurrentProject.Connection.Execute strSQL
strSQL = "update mruser set upass='sss',uname='ww', userid='11'"
CurrentProject.Connection.Execute strSQL
如果要考虑数据结构完整性请使用 ADO 支持的事务处理
关于此主题请参考:
《查询》什么是事务处理?怎么进行事务处理?
http://access911.net/index.asp?u1=a&u2=71FABE1E13DC
关于此主题请参考:
关于事务处理《查询》
http://access911.net/index.asp?u1=a&u2=73FABF1E14DC
access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接