计算机三级数据库技术(数据库后台编程技术)机试模拟试卷7
选择题
1.下列关于SQL Server 2008存储过程的说法,错误的是(A)
A. 存储过程的输入参数不能有默认值
B. 存储过程允许有多个输入参数
C. 存储过程能以输出参数的形式将多个值返回给调用者
D. 存储过程可以向调用者返回执行是否成功的状态值
解析:创建存储过程的SQL语句为CREATE PROCEDURE。其语法格式为:
CREATE{PROC|PROCEDURE}[schema_name.]procedure_name
[{@parameter[type_schema_name.]data_type}
[=default][OUT|OUTPUT]
][,…n][WITH RECOMPILE]
As {<sql_statement>[;][…n]}
[;]
<sql_statement>::={[BEGIN]statements[END]}
根据存储过程的语法格式,输入参数允许有默认值。故答案为A选项。
2.设在SQL Server 2008某数据库中有销售表(商品号,销售时间,销售数量,销售价格),其中商品号的类型为char(6),销售价格的类型为int。现要定义统计指定商品销售总价的标量函数。有下列定义该标量函数的语句
Ⅰ.Create FUNCTION dbo.GetTotal(@GoodID char(6))
Returns int AS
BEGIN
Return(SELECT SUM(销售价格)FROM 销售表WHERE商品号=@GoodID)
END
Ⅱ.Create FUNCTION dbo.GetTotal(@GoodID char(6))
Returns int AS
BEGIN
Returns(SELECT SUM(销售价格)FROM 销售表 WHERE商品号=@GoodID)
END
Ⅲ.Create FUNCTION dbo.GetTotal(@GoodID char(6))
Returns int
BEGIN
Return(SELECT SUM(销售价格)FROM销售表WHERE商品号=@GoodID)
END
Ⅳ.Create FUNCTION dbo.GetTotal(@GoodID char(6))
Returns int
Returns(SELECT SUM(销售价格)FROM销售表WHERE商品号=@GoodID)
上述语句中,正确的是((D)
A. 仅Ⅰ和Ⅱ
B. 仅Ⅲ和Ⅳ
C. 仅Ⅱ和Ⅳ
D. 仅Ⅰ和Ⅲ
解析:标量函数返回一个确定类型的标量值。函数体语句定义在BEGIN-END语句内,其中包含了可以返回值的Transact-SQL命令。
创建标量函数的语法如下:
CREATE FUNCTION [owner_name.]function_name
([{@parameter_name [AS][type_schema_name.]parameter_data_type
[=default]}
[,…n]
]
)
RETURNS return_data_type
[AS]
BEGIN
function_body
RETURN scalar_expression
END
[;]
3.下列关于存储过程的说法,正确的是( )。(C)
A. 一个存储过程只能有一个输出参数
B. 存储过程不支持输入参数有默认值
C. 存储过程的返回结果可以是一个集合
D. 删除存储过程的语句是:DELETE PROCEDURE存储过程名
解析:在创建存储过程时可以声明一个或多个参数。除非定义了参数的默认值或者将参数设置作为等于另外一个参数。一个存储过程最多可以有2100个参数。存储过程的返回结果可以是一个集合﹔删除存储过程的语句是:DROP PROCEDURE存储过程名。故答案为C选项。
4.设在SQL Server 2008中有如下定义触发器的语句:
CREATE TRIGGER tri ON T1 FOR INSERT AS ……
下列关于该语句的说法,正确的是( )。(A)
A. 该语句声明的是一个后触发型触发器,每当在T1表上执行完插入操作之后,执行tri触发器
B. 该语句声明的是一个后触发型触发器,每当执行完tri触发器后,再执行插入语句
C. 该语句声明的是一个前触发型触发器,每当在T1表上执行插入操作之前,先执行tri触发器
D. 该语句声明的是一个前触发型触发器,每当执行tri触发器前,先执行插入语句
解析:使用FOR或者AFTER选项定义的触发器为后触发的触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。使用INSTEAD OF选项定义的触发器为前触发器。在这种模式的触发器中,指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代引发的操作。故答案为A项。
5.在SQL Server 2008中,要对结果集中的每行数据进行单独处理,需要使用游标来实现。下列关于游标的说法,错误的是( )。(B)
A. 游标由游标结果集和游标当前行指针两部分组成
B. 如果声明游标时不指定SCROLL选项,则在对游标进行FETCH操作时只能指定NEXT和LAST选项
C. 在对游标进行FETCH操作后,可以使用@@FETCH_STATUS变量判断数据提取状态
D. 当使用CLOSE语句关闭游标后,需使用DEALLOCATE命令释放系统为游标分配的资源
解析:如果未在声明游标时指定SCROLL,则NEXT是唯一支持的提取选项。故答案为B项。
6.下列关于触发器的说法,正确的是( )。(B)
A. 利用触发器可以提高数据查询性能
B. 利用触发器可以实施业务规则
C. 利用触发器可以提高数据更改性能
D. 触发器主要用于防止非法用户访问
解析:触发器是一种特殊的存储过程,其特殊性在于它不需要由用户来直接调用,而是在对表中的数据进行UPDATE、INSERT或DELETE操作时自动触发执行的。触发器通常用于保证业务规则和数据完整性,其主要优点是用户可以用编程的方法来实现复杂的处理逻辑和商业规则,增强了数据完整性约束的功能。故答案为B选项。
7.在开发数据库应用系统时,使用存储过程可以提高数据访问效率,降低网络流量。下列关于存储过程的说法,错误的是( )(B)
A. 存储过程可以接受输入参数,并可将执行结果以输出参数形式返回
B. 存储过程
本文档预览:3600字符,共12025字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载