精通MS-ACCESS SQL之基础篇(19)-Big Young
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-查询/SQL语句


精通MS-ACCESS SQL之基础篇(19)

发表时间:2017/12/8 11:42:00 评论(0) 浏览(5004)  评论 | 加入收藏 | 复制
   
摘 要:    用PARAMETERS命令实现ACCESS的参数查询。
正 文:

第十九节 用PARAMETERS命令实现ACCESS的参数查询

参数查询又叫参数化查询(Parameterized Query Parameterized Statement)是指某些情况下,需要创建可以使用多次,但每次使用不同值的查询,就是在设计与数据库链接并访问数据的SQL语句时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这种理念就是“一次创建,多次运行”。例如,可能经常运行一个查询以查找某位学生的某次考试成绩,可以为每次请求运行相同的查询,只是每次使用的学生的学号或者姓名不同。参数是在运行查询时所提供值的占位符,运行时系统会弹出一个模式对话框,请求用户为参数输入值,用户不能退出具有这些特征的模式对话框。

一、参数查询的基本语法

PARAMETERS name datatype [, name datatype [, …]]

参数查询的PARAMETERS子句的组成部分说明:

项目

说明

Name

参数的名字,用以设置数据库引擎的Parameter 对象的Name属性,在Parameters集合中标识一个Parameter对象。在程序运行查询时,此名字字符串将显示在对话框上。如果名字中有空格或标点符号应用方括号([])将其括起来,例如:[Low price] [Begin report with which month?]都是有效的参数名。

Datatype

MS Access SQL的基本数据类型或数据类型的别名(同义词)。

我们可以在查询语句的WhereHAVING子句中使用不带数据类型说明符的参数名,下面我们看一个实际的参数查询例子,此例展示了带两个参数的SQL语句来实现对客户表的查询:

PARAMETERS [最低订数] Currency,

[开始日期] DateTime;

Select 客户ID, 购货量

FROM 客户

Where 购货量 > [最低订数]

AND 订购日期 >= [开始日期];

大家仔细揣摩一下这个示例,可以加深对参数查询的理解,下面我们再结合具体的查询实例来进一步领会参数查询的精粹。

二、在Select(选择)查询中使用参数

可以将参数用作文本值(文本值或数值)的占位符。最常见的是,参数经常在单个行或组的搜索条件中(即在SQL语句的WhereHAVING子句中)用作占位符,前面的示例也表明了这一点。下面我们打开罗斯文商贸示例数据库,创建一个对员工表的查询:

PARAMETERS [职务] CHAR;

Select ID, (姓氏 & 名字) AS 姓名

FROM 员工

Where 职务 = [职务];

执行此查询,产生如图19-1所示的对话框:

19-1:运行带参数的选择查询的效果

我们现在在对话框的文本框中输入销售代表并点击确定按钮,会查询出如图19-2所示的效果:

19-2:参数选择查询结果

这里列出的是命名的参数查询,其实还可以写成匿名的参数查询,就是省略PARAMETERS子句,在需要指定参数的地方用“?”,语句如下:

Select ID, (姓氏 & 名字) AS 姓名

FROM 员工

Where 职务 = ?;

运行后如图19-3所示:

19-3:匿名参数查询示例

查询的效果与命名参数查询是一样的,在此就不多说什么了。

三、在Delete(删除)查询中使用参数

我们上面讲的例子都是在选择查询中使用参数,其实ACCESS的参数查询还可以用在其它类型的查询中,下面我来看一看Delete(删除)查询中的应用。

比如当员工离职时,我们要从“员工”表中把相应的员工的记录删除,这时我们也可以创建一个参数查询来使删除工作模式化,减少重复劳动。我们可以在“SQL视图中输入如下SQL语句:

Delete *

FROM 员工

Where (姓氏 & 名字) = [请输入员工姓名];

运行后如图19-4

19-4:带参数的删除查询

或者:

PARAMETERS [姓名] CHAR;

Delete *

FROM 员工

Where (姓氏 & 名字) = [姓名];

执行的效果是一样,都会删除在此对话框输入的姓名的员工的信息记录。

四、在Update(更新)查询中使用参数

我们在更新查询中也同样可以使用参数,创建一个参数更新查询。如,当一个员工从一个城市调到另一个城市的时候,我们要把符合查询条件的员工的城市字段更新。参数在这个例子里有更大的用处,不仅仅是作为筛选的条件,还可以用于动态的赋予新的城市名。

我们在“SQL视图中输入如下SQL语句:

PARAMETERS [姓名] Text (4), [城市] Text ( 20 );

Update 员工

SET 城市 = [城市]

Where (姓氏 & 名字) = [姓名];

由于前面已给出了多个示例图,这里为了减小篇幅就不再上图了,大家可以自己测试看看效果。

这里需要提醒一点,加上PARAMETERS声明,是为了让[姓名]对话框先出现,这样比较符合操作思路,先找出需要对其数据记录进行更新的人,再把城市设为新的值。如果不显式声明,Update语句中的SET子句出现在Where子句前,虽然不影响运行结果,参数只是用值替代,但用起来不符合习惯。

从上面的例子中我们可以得出结论:一是参数基本上只能用在条件筛选的子句中;二是参数可以是命名的,也可以是匿名的;三是参数可以在各种查询中使用。


Access软件网交流QQ群(群号:198465573)
 
 相关文章
精通MS-ACCESS SQL之基础篇(16)  【Big Young  2017/12/5】
精通MS-ACCESS SQL之基础篇(17)  【Big Young  2017/12/7】
精通MS-ACCESS SQL之基础篇(18)  【Big Young  2017/12/7】
精通MS-ACCESS SQL之基础篇(20)  【Big Young  2017/12/11】
精通MS-ACCESS SQL之基础篇(21)  【Big Young  2017/12/14】
精通MS-ACCESS SQL之基础篇(22)  【Big Young  2017/12/14】
常见问答
技术分类
相关资源
文章搜索
关于作者

Big Young

文章分类

文章存档

友情链接