内容正文:
编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第71练,内容是调用和修改存储过程。
《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第71练
调用和修改存储过程
一、单项选择题
1. 已知存在无参数存储过程proc_get_all_student,下列调用该存储过程的语法正确的是( )
A. CALL proc_get_all_student;
B. CALL proc_get_all_student();
C. EXEC proc_get_all_student();
D. SELECT proc_get_all_student();
【答案】B
【解析】MySQL 调用存储过程必须使用CALL关键字,且无论是否有参数,都必须加括号()。A 错误:无参数存储过程也必须加括号;C 错误:EXEC是 SQL Server 的调用关键字,MySQL 不支持;D 错误:不能用SELECT调用存储过程。
2.已知存在带 IN 参数的存储过程proc_get_student_by_age(IN min_age INT),下列调用语法正确的是( )
A. CALL proc_get_student_by_age(18);
B. CALL proc_get_student_by_age IN 18;
C. CALL proc_get_student_by_age(min_age=18);
D. CALL proc_get_student_by_age('18');
【答案】A
【解析】IN 参数调用直接传入对应类型的值即可,不需要加参数名或IN关键字。B 错误:多余IN关键字;C 错误:MySQL 不支持命名参数调用;D 错误:数值类型参数不需要加单引号。
3.已知存在带 OUT 参数的存储过程proc_get_student_count(OUT total INT),下列调用语法正确的是( )
A. CALL proc_get_student_count(total);
B. CALL proc_get_student_count(@total);
C. SET @total=CALL proc_get_student_count();
D. SELECT proc_get_student_count() INTO @total;
【答案】B
【解析】OUT 参数必须使用 ** 用户变量(以 @开头)** 接收返回值,不能直接使用普通变量。A 错误:未使用 @变量;C 错误:赋值语法错误,不能用SET 变量=CALL ...;D 错误:不能用SELECT ... INTO调用存储过程。
4.已知存在带 INOUT 参数的存储过程proc_add_ten(INOUT num INT),下列调用语法正确的是( )
A. SET @num=5; CALL proc_add_ten(@num);
B. CALL proc_add_ten(5);
C. CALL proc_add_ten(@num=5);
D. SET num=5; CALL proc_add_ten(num);
【答案】A
【解析】INOUT 参数需要先给用户变量赋值,再传入存储过程,调用后变量值会被修改。B 错误:直接传入常量,无法接收返回值;C 错误:不支持命名参数赋值;D 错误:未使用 @用户变量。
5.已知数据库school中存在存储过程proc_get_class_student(IN c_id INT),下列跨库调用语法正确的是( )
A. CALL school.proc_get_class_student(1);
B. CALL proc_get_class_student FROM school(1);
C. CALL school.proc_get_class_student IN 1;
D. CALL school.proc_get_class_student(1) FROM school;
【答案】A
【解析】跨库调用存储过程的标准格式为CALL 数据库名.存储过程名(参数列表)。B、C、D 错误:无FROM/IN关键字,语法冗余。
6.已知存在存储过程proc_daily_clean,需修改其注释为 “每日凌晨清理 7 天前日志”,下列语法正确的是( )
A. ALTER PROCEDURE proc_daily_clean COMMENT '每日凌晨清理7天前日志';
B. ALTER PROCEDURE proc_daily_clean SET COMMENT='每日凌晨清理7天前日志';
C. ALTER PROCEDURE proc_daily_clean COMMENT=每日凌晨清理7天前日志;
D. UPDATE PROCEDURE proc_daily_clean SET COMMENT='每日凌晨清理7天前日志';
【答案】A
【解析】修改存储过程注释的标准语法为ALTER PROCEDURE 存储过程名 COMMENT '注释内容'。B 错误:多余SET关键字;C 错误:注释未加单引号且多了等号;D 错误:MySQL 无UPDATE PROCEDURE语法。
7.已知存在存储过程proc_get_user_info,需修改其 SQL 安全特性为SQL SECURITY INVOKER,下列语法正确的是( )
A. ALTER PROCEDURE proc_get_user_info SQL SECURITY INVOKER;
B. ALTER PROCEDURE proc_get_user_info SET SQL SECURITY=INVOKER;
C. ALTER PROCEDURE proc_get_user_info SECURITY SQL INVOKER;
D. ALTER PROCEDURE proc_get_user_info SQL SECURITY=INVOKER;
【答案】A
【解析】修改存储过程 SQL 安全特性的标准语法为ALTER PROCEDURE 存储过程名 SQL SECURITY DEFINER|INVOKER。B、D 错误:多余SET和等号;C 错误:SQL SECURITY顺序颠倒。
8.下列关于修改存储过程的 SQL 语句中,存在核心语法错误的是( )
A. ALTER PROCEDURE proc_test COMMENT '测试存储过程';
B. ALTER PROCEDURE proc_test SQL SECURITY INVOKER;
C. ALTER PROCEDURE proc_test(IN a INT) BEGIN SELECT a; END;
D. ALTER PROCEDURE proc_test CONTAINS SQL;
【答案】C
【解析】MySQL 中ALTER PROCEDURE 只能修改存储过程的注释、SQL 安全特性、SQL 特性等属性,不能修改参数列表和存储过程体。若需修改参数或过程体,只能先删除再重建。A、B、D 均为合法的修改操作;C 错误:试图修改参数列表和过程体。
9.已知存在存储过程proc_get_order_stats,需同时修改其 SQL 安全特性为调用者权限和注释为 “统计订单数据”,下列语法完全正确的是( )
A. ALTER PROCEDURE proc_get_order_stats SQL SECURITY INVOKER COMMENT '统计订单数据';
B. ALTER PROCEDURE proc_get_order_stats SET SQL SECURITY=INVOKER COMMENT='统计订单数据';
C. ALTER PROCEDURE proc_get_order_stats '统计订单数据' SQL SECURITY INVOKER;
D. ALTER PROCEDURE proc_get_order_stats(IN start_date DATE) SQL SECURITY INVOKER COMMENT '统计订单数据';
【答案】A
【解析】ALTER PROCEDURE 可同时修改多个属性,顺序为SQL SECURITY在前、COMMENT在后;不能加 SET 和等号;绝对不能修改参数列表。B 错误:加了冗余的 SET 和等号;C 错误:属性顺序颠倒;D 错误:试图修改参数列表,违反 ALTER PROCEDURE 核心限制。
10.下列关于修改存储过程的 SQL 语句中,唯一合法的是( )
A. ALTER PROCEDURE proc_test RENAME TO proc_new_test;
B. ALTER PROCEDURE proc_test BEGIN SELECT '新的存储过程体'; END;
C. ALTER PROCEDURE proc_test NO SQL;
D. ALTER PROCEDURE proc_test(IN a INT, OUT b INT);
【答案】C
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第71练,内容是调用和修改存储过程。
《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第71练
调用和修改存储过程
一、单项选择题
1. 已知存在无参数存储过程proc_get_all_student,下列调用该存储过程的语法正确的是( )
A. CALL proc_get_all_student;
B. CALL proc_get_all_student();
C. EXEC proc_get_all_student();
D. SELECT proc_get_all_student();
2.已知存在带 IN 参数的存储过程proc_get_student_by_age(IN min_age INT),下列调用语法正确的是( )
A. CALL proc_get_student_by_age(18);
B. CALL proc_get_student_by_age IN 18;
C. CALL proc_get_student_by_age(min_age=18);
D. CALL proc_get_student_by_age('18');
3.已知存在带 OUT 参数的存储过程proc_get_student_count(OUT total INT),下列调用语法正确的是( )
A. CALL proc_get_student_count(total);
B. CALL proc_get_student_count(@total);
C. SET @total=CALL proc_get_student_count();
D. SELECT proc_get_student_count() INTO @total;
4.已知存在带 INOUT 参数的存储过程proc_add_ten(INOUT num INT),下列调用语法正确的是( )
A. SET @num=5; CALL proc_add_ten(@num);
B. CALL proc_add_ten(5);
C. CALL proc_add_ten(@num=5);
D. SET num=5; CALL proc_add_ten(num);
5.已知数据库school中存在存储过程proc_get_class_student(IN c_id INT),下列跨库调用语法正确的是( )
A. CALL school.proc_get_class_student(1);
B. CALL proc_get_class_student FROM school(1);
C. CALL school.proc_get_class_student IN 1;
D. CALL school.proc_get_class_student(1) FROM school;
6.已知存在存储过程proc_daily_clean,需修改其注释为 “每日凌晨清理 7 天前日志”,下列语法正确的是( )
A. ALTER PROCEDURE proc_daily_clean COMMENT '每日凌晨清理7天前日志';
B. ALTER PROCEDURE proc_daily_clean SET COMMENT='每日凌晨清理7天前日志';
C. ALTER PROCEDURE proc_daily_clean COMMENT=每日凌晨清理7天前日志;
D. UPDATE PROCEDURE proc_daily_clean SET COMMENT='每日凌晨清理7天前日志';
7.已知存在存储过程proc_get_user_info,需修改其 SQL 安全特性为SQL SECURITY INVOKER,下列语法正确的是( )
A. ALTER PROCEDURE proc_get_user_info SQL SECURITY INVOKER;
B. ALTER PROCEDURE proc_get_user_info SET SQL SECURITY=INVOKER;
C. ALTER PROCEDURE proc_get_user_info SECURITY SQL INVOKER;
D. ALTER PROCEDURE proc_get_user_info SQL SECURITY=INVOKER;
8.下列关于修改存储过程的 SQL 语句中,存在核心语法错误的是( )
A. ALTER PROCEDURE proc_test COMMENT '测试存储过程';
B. ALTER PROCEDURE proc_test SQL SECURITY INVOKER;
C. ALTER PROCEDURE proc_test(IN a INT) BEGIN SELECT a; END;
D. ALTER PROCEDURE proc_test CONTAINS SQL;
9.已知存在存储过程proc_get_order_stats,需同时修改其 SQL 安全特性为调用者权限和注释为 “统计订单数据”,下列语法完全正确的是( )
A. ALTER PROCEDURE proc_get_order_stats SQL SECURITY INVOKER COMMENT '统计订单数据';
B. ALTER PROCEDURE proc_get_order_stats SET SQL SECURITY=INVOKER COMMENT='统计订单数据';
C. ALTER PROCEDURE proc_get_order_stats '统计订单数据' SQL SECURITY INVOKER;
D. ALTER PROCEDURE proc_get_order_stats(IN start_date DATE) SQL SECURITY INVOKER COMMENT '统计订单数据';
10.下列关于修改存储过程的 SQL 语句中,唯一合法的是( )
A. ALTER PROCEDURE proc_test RENAME TO proc_new_test;
B. ALTER PROCEDURE proc_test BEGIN SELECT '新的存储过程体'; END;
C. ALTER PROCEDURE proc_test NO SQL;
D. ALTER PROCEDURE proc_test(IN a INT, OUT b INT);
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$