内容正文:
编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第70练,内容是认识和创建存储过程。
《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第70练
认识和创建存储过程
一、单项选择题
1. 创建一个无参数存储过程proc_get_student,查询所有学生信息,下列语法完全正确的是( )
A. CREATE PROCEDURE proc_get_student() BEGIN SELECT * FROM student; END;
B. DELIMITER // CREATE PROCEDURE proc_get_student() BEGIN SELECT * FROM student; END // DELIMITER ;
C. DELIMITER ; CREATE PROCEDURE proc_get_student() BEGIN SELECT * FROM student; END // DELIMITER //
D. DELIMITER // CREATE PROCEDURE proc_get_student BEGIN SELECT * FROM student; END // DELIMITER ;
2.创建一个带IN 输入参数的存储过程proc_get_student_by_id,根据学号查询学生信息,下列语法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_get_student_by_id(IN s_id INT) BEGIN SELECT * FROM student WHERE id=s_id; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_get_student_by_id(s_id INT IN) BEGIN SELECT * FROM student WHERE id=s_id; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_get_student_by_id(INPUT s_id INT) BEGIN SELECT * FROM student WHERE id=s_id; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_get_student_by_id(IN s_id) BEGIN SELECT * FROM student WHERE id=s_id; END // DELIMITER ;
3.创建一个带OUT 输出参数的存储过程proc_get_student_count,统计学生总数并通过参数返回,下列语法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_get_student_count(OUT count INT) BEGIN SELECT COUNT(*) INTO count FROM student; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_get_student_count(count INT OUT) BEGIN SELECT COUNT(*) INTO count FROM student; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_get_student_count(OUT count INT) BEGIN SET count=SELECT COUNT(*) FROM student; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_get_student_count(OUT count INT) BEGIN SELECT COUNT(*) FROM student INTO count; END // DELIMITER ;
4.创建一个带INOUT 输入输出参数的存储过程proc_add_num,将传入的数值加 10 后返回,下列语法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_add_num(INOUT num INT) BEGIN SET num=num+10; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_add_num(IN OUT num INT) BEGIN SET num=num+10; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_add_num(INOUT num) BEGIN SET num=num+10; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_add_num(INOUT num INT) BEGIN num=num+10; END // DELIMITER ;
5.创建存储过程时添加存在性检查,避免重复创建报错,下列语法正确的是( )
A. DELIMITER // CREATE IF NOT EXISTS PROCEDURE proc_test() BEGIN SELECT 'Hello World'; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE IF NOT EXISTS proc_test() BEGIN SELECT 'Hello World'; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_test() IF NOT EXISTS BEGIN SELECT 'Hello World'; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE EXISTS proc_test() BEGIN SELECT 'Hello World'; END // DELIMITER ;
6.存储过程中添加注释说明,下列写法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_get_student_by_age(IN min_age INT) COMMENT '查询年龄大于指定值的学生' BEGIN SELECT * FROM student WHERE age>min_age; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_get_student_by_age(IN min_age INT) BEGIN -- 查询年龄大于指定值的学生 SELECT * FROM student WHERE age>min_age; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_get_student_by_age(IN min_age INT) COMMENT=查询年龄大于指定值的学生 BEGIN SELECT * FROM student WHERE age>min_age; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_get_student_by_age(IN min_age INT) COMMENT "查询年龄大于指定值的学生" BEGIN SELECT * FROM student WHERE age>min_age; END // DELIMITER ;
7.创建一个包含多条 SQL 语句的存储过程proc_delete_old_log,删除 7 天前的日志并记录删除数量,下列语法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_delete_old_log(OUT delete_count INT) BEGIN DELETE FROM log WHERE create_time < NOW()-INTERVAL 7 DAY; SELECT ROW_COUNT() INTO delete_count; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_delete_old_log(OUT delete_count INT) DO DELETE FROM log WHERE create_time < NOW()-INTERVAL 7 DAY; SELECT ROW_COUNT() INTO delete_count; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_delete_old_log(OUT delete_count INT) BEGIN DELETE FROM log WHERE create_time < NOW()-INTERVAL 7 DAY SELECT ROW_COUNT() INTO delete_count END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_delete_old_log(OUT delete_count INT) ( DELETE FROM log WHERE create_time < NOW()-INTERVAL 7 DAY; SELECT ROW_COUNT() INTO delete_count; ) // DELIMITER ;
8.下列关于存储过程参数的写法中,存在核心语法错误的是( )
A. CREATE PROCEDURE proc_test(IN a INT, OUT b INT, INOUT c INT)
B. CREATE PROCEDURE proc_test(IN a INT, IN b INT)
C. CREATE PROCEDURE proc_test(OUT a INT, IN b INT)
D. CREATE PROCEDURE proc_test(IN a INT OUT b INT)
9.创建存储过程时,下列关于存储过程名称的写法正确的是( )
A. CREATE PROCEDURE 'proc_get_student'()
B. CREATE PROCEDURE proc get student()
C. CREATE PROCEDURE proc_get_student_123()
D. CREATE PROCEDURE SELECT()
10.已知数据表:商品表goods(商品id g_id,商品名g_name,库存stock),库存日志表stock_log(日志id log_id AUTO_INCREMENT,商品id g_id,变动数量change_num,操作时间log_time)。创建一个带存在性检查的存储过程proc_add_stock,接收商品 ID 和要增加的库存数量(IN 参数),返回更新后的总库存(OUT 参数),同时自动记录库存变动日志,添加注释 “增加商品库存并记录日志”,下列语法完全正确的是( )
A. DELIMITER // CREATE PROCEDURE IF NOT EXISTS proc_add_stock(IN p_gid INT, IN p_num INT, OUT p_total INT) COMMENT '增加商品库存并记录日志' BEGIN UPDATE goods SET stock=stock+p_num WHERE g_id=p_gid; SELECT stock INTO p_total FROM goods WHERE g_id=p_gid; INSERT INTO stock_log(g_id,change_num,log_time) VALUES(p_gid,p_num,NOW()); END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE IF NOT EXISTS proc_add_stock(IN p_gid INT, IN p_num INT, OUT p_total INT) COMMENT='增加商品库存并记录日志' BEGIN UPDATE goods SET stock=stock+p_num WHERE g_id=p_gid; SELECT stock INTO p_total FROM goods WHERE g_id=p_gid; INSERT INTO stock_log(g_id,change_num,log_time) VALUES(p_gid,p_num,NOW()); END // DELIMITER //
C. DELIMITER // CREATE PROCEDURE IF NOT EXISTS proc_add_stock(IN p_gid INT, IN p_num INT, OUT p_total INT) COMMENT '增加商品库存并记录日志' BEGIN UPDATE goods SET stock=stock+p_num WHERE g_id=p_gid; SET p_total=SELECT stock FROM goods WHERE g_id=p_gid; INSERT INTO stock_log(g_id,change_num,log_time) VALUES(p_gid,p_num,NOW()); END // DELIMITER ;
D. DELIMITER // CREATE IF NOT EXISTS PROCEDURE proc_add_stock(IN p_gid INT, IN p_num INT, OUT p_total INT) COMMENT '增加商品库存并记录日志' BEGIN UPDATE goods SET stock=stock+p_num WHERE g_id=p_gid; SELECT stock INTO p_total FROM goods WHERE g_id=p_gid; INSERT INTO stock_log(g_id,change_num,log_time) VALUES(p_gid,p_num,NOW()); END // DELIMITER ;
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第70练,内容是认识和创建存储过程。
《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第70练
认识和创建存储过程
一、单项选择题
1. 创建一个无参数存储过程proc_get_student,查询所有学生信息,下列语法完全正确的是( )
A. CREATE PROCEDURE proc_get_student() BEGIN SELECT * FROM student; END;
B. DELIMITER // CREATE PROCEDURE proc_get_student() BEGIN SELECT * FROM student; END // DELIMITER ;
C. DELIMITER ; CREATE PROCEDURE proc_get_student() BEGIN SELECT * FROM student; END // DELIMITER //
D. DELIMITER // CREATE PROCEDURE proc_get_student BEGIN SELECT * FROM student; END // DELIMITER ;
【答案】B
2.创建一个带IN 输入参数的存储过程proc_get_student_by_id,根据学号查询学生信息,下列语法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_get_student_by_id(IN s_id INT) BEGIN SELECT * FROM student WHERE id=s_id; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_get_student_by_id(s_id INT IN) BEGIN SELECT * FROM student WHERE id=s_id; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_get_student_by_id(INPUT s_id INT) BEGIN SELECT * FROM student WHERE id=s_id; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_get_student_by_id(IN s_id) BEGIN SELECT * FROM student WHERE id=s_id; END // DELIMITER ;
【答案】A
3.创建一个带OUT 输出参数的存储过程proc_get_student_count,统计学生总数并通过参数返回,下列语法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_get_student_count(OUT count INT) BEGIN SELECT COUNT(*) INTO count FROM student; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_get_student_count(count INT OUT) BEGIN SELECT COUNT(*) INTO count FROM student; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_get_student_count(OUT count INT) BEGIN SET count=SELECT COUNT(*) FROM student; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_get_student_count(OUT count INT) BEGIN SELECT COUNT(*) FROM student INTO count; END // DELIMITER ;
【答案】A
4.创建一个带INOUT 输入输出参数的存储过程proc_add_num,将传入的数值加 10 后返回,下列语法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_add_num(INOUT num INT) BEGIN SET num=num+10; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_add_num(IN OUT num INT) BEGIN SET num=num+10; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_add_num(INOUT num) BEGIN SET num=num+10; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_add_num(INOUT num INT) BEGIN num=num+10; END // DELIMITER ;
【答案】A
5.创建存储过程时添加存在性检查,避免重复创建报错,下列语法正确的是( )
A. DELIMITER // CREATE IF NOT EXISTS PROCEDURE proc_test() BEGIN SELECT 'Hello World'; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE IF NOT EXISTS proc_test() BEGIN SELECT 'Hello World'; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_test() IF NOT EXISTS BEGIN SELECT 'Hello World'; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE EXISTS proc_test() BEGIN SELECT 'Hello World'; END // DELIMITER ;
【答案】B
6.存储过程中添加注释说明,下列写法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_get_student_by_age(IN min_age INT) COMMENT '查询年龄大于指定值的学生' BEGIN SELECT * FROM student WHERE age>min_age; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_get_student_by_age(IN min_age INT) BEGIN -- 查询年龄大于指定值的学生 SELECT * FROM student WHERE age>min_age; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_get_student_by_age(IN min_age INT) COMMENT=查询年龄大于指定值的学生 BEGIN SELECT * FROM student WHERE age>min_age; END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_get_student_by_age(IN min_age INT) COMMENT "查询年龄大于指定值的学生" BEGIN SELECT * FROM student WHERE age>min_age; END // DELIMITER ;
【答案】A
7.创建一个包含多条 SQL 语句的存储过程proc_delete_old_log,删除 7 天前的日志并记录删除数量,下列语法正确的是( )
A. DELIMITER // CREATE PROCEDURE proc_delete_old_log(OUT delete_count INT) BEGIN DELETE FROM log WHERE create_time < NOW()-INTERVAL 7 DAY; SELECT ROW_COUNT() INTO delete_count; END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE proc_delete_old_log(OUT delete_count INT) DO DELETE FROM log WHERE create_time < NOW()-INTERVAL 7 DAY; SELECT ROW_COUNT() INTO delete_count; END // DELIMITER ;
C. DELIMITER // CREATE PROCEDURE proc_delete_old_log(OUT delete_count INT) BEGIN DELETE FROM log WHERE create_time < NOW()-INTERVAL 7 DAY SELECT ROW_COUNT() INTO delete_count END // DELIMITER ;
D. DELIMITER // CREATE PROCEDURE proc_delete_old_log(OUT delete_count INT) ( DELETE FROM log WHERE create_time < NOW()-INTERVAL 7 DAY; SELECT ROW_COUNT() INTO delete_count; ) // DELIMITER ;
【答案】A
8.下列关于存储过程参数的写法中,存在核心语法错误的是( )
A. CREATE PROCEDURE proc_test(IN a INT, OUT b INT, INOUT c INT)
B. CREATE PROCEDURE proc_test(IN a INT, IN b INT)
C. CREATE PROCEDURE proc_test(OUT a INT, IN b INT)
D. CREATE PROCEDURE proc_test(IN a INT OUT b INT)
【答案】D
9.创建存储过程时,下列关于存储过程名称的写法正确的是( )
A. CREATE PROCEDURE 'proc_get_student'()
B. CREATE PROCEDURE proc get student()
C. CREATE PROCEDURE proc_get_student_123()
D. CREATE PROCEDURE SELECT()
【答案】C
10.已知数据表:商品表goods(商品id g_id,商品名g_name,库存stock),库存日志表stock_log(日志id log_id AUTO_INCREMENT,商品id g_id,变动数量change_num,操作时间log_time)。创建一个带存在性检查的存储过程proc_add_stock,接收商品 ID 和要增加的库存数量(IN 参数),返回更新后的总库存(OUT 参数),同时自动记录库存变动日志,添加注释 “增加商品库存并记录日志”,下列语法完全正确的是( )
A. DELIMITER // CREATE PROCEDURE IF NOT EXISTS proc_add_stock(IN p_gid INT, IN p_num INT, OUT p_total INT) COMMENT '增加商品库存并记录日志' BEGIN UPDATE goods SET stock=stock+p_num WHERE g_id=p_gid; SELECT stock INTO p_total FROM goods WHERE g_id=p_gid; INSERT INTO stock_log(g_id,change_num,log_time) VALUES(p_gid,p_num,NOW()); END // DELIMITER ;
B. DELIMITER // CREATE PROCEDURE IF NOT EXISTS proc_add_stock(IN p_gid INT, IN p_num INT, OUT p_total INT) COMMENT='增加商品库存并记录日志' BEGIN UPDATE goods SET stock=stock+p_num WHERE g_id=p_gid; SELECT stock INTO p_total FROM goods WHERE g_id=p_gid; INSERT INTO stock_log(g_id,change_num,log_time) VALUES(p_gid,p_num,NOW()); END // DELIMITER //
C. DELIMITER // CREATE PROCEDURE IF NOT EXISTS proc_add_stock(IN p_gid INT, IN p_num INT, OUT p_total INT) COMMENT '增加商品库存并记录日志' BEGIN UPDATE goods SET stock=stock+p_num WHERE g_id=p_gid; SET p_total=SELECT stock FROM goods WHERE g_id=p_gid; INSERT INTO stock_log(g_id,change_num,log_time) VALUES(p_gid,p_num,NOW()); END // DELIMITER ;
D. DELIMITER // CREATE IF NOT EXISTS PROCEDURE proc_add_stock(IN p_gid INT, IN p_num INT, OUT p_total INT) COMMENT '增加商品库存并记录日志' BEGIN UPDATE goods SET stock=stock+p_num WHERE g_id=p_gid; SELECT stock INTO p_total FROM goods WHERE g_id=p_gid; INSERT INTO stock_log(g_id,change_num,log_time) VALUES(p_gid,p_num,NOW()); END // DELIMITER ;
【答案】A
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$