存储过程题目

合集下载

储存过程(答案)

储存过程(答案)

单选题
1、将具有特定功能的一段SQL语句(多于一条)在数据库服务器上进行预先定义并编译,以
供应用程序调用,该段SQL程序可被定义为(D)
A、事物
B、触发器
C、视图
D、存储过程
2、以下对存储过程的叙述中,不正确的是(C)
A、存储过程可以定义变量
B、存储过程是一组为了完成特定功能的SQL语句组成的程序
C、存储过程不能嵌套调用
D、存储过程可以一次编译,多次执行
3、关于存储过程说法错误的是(C)
A、方便用户完成某些功能
B、用户存储过程方便用户批量执行T-SQL命令
C、用户存储过程不能调用系统存储过程
D、应用程序可以调用用户存储过程
4、存储过程的修改不能采用(D)。

A、界面方式修改命令方式创建的存储过程
B、ALTER PROCEDURE
C、先删除再创建
D、C REATE PROCEDURE
5、关于存储过程的描述正确的一项是(C)。

A、存储过程存在于内存中,每次重新启动DBMS时,便,会自动消失
B、存储过程在每次调用时都会被编译-次
C、存储过程可以包含输入和输出参数,增加了调用时的灵活性
D.执行一次存储过程所花的时间,比执行相同的SQL批处理要长
判断题
6、存储过程未存在服务器注册(错)
7、相较于用户自定义存储过程,系统存储过程更加的自由(错)
8、用户定义的存储过程是指由数据库管理系统所提供的存储过程(错)
9、存储过程可以带参数,从而增加调用灵活性(对)
10、存储过程一旦创建,其脚本就被加密,不能再次编辑修改(错)。

存储过程练习题

存储过程练习题

存储过程练习题存储过程是一种数据库对象,可以封装一系列的SQL语句并在数据库中进行存储和执行。

它在提高数据库性能和简化开发过程方面具有重要作用。

本文将从实际问题出发,提供一些存储过程练习题,帮助读者巩固并加深对存储过程的理解。

1. 创建一个存储过程,根据指定日期的订单数量进行统计,并将结果返回。

创建存储过程:DELIMITER //CREATE PROCEDURE OrderCount(IN orderDate DATE, OUT quantity INT)BEGINSELECT COUNT(*) INTO quantity FROM Orders WHERE order_date = orderDate;END //DELIMITER ;调用存储过程:CALL OrderCount('2022-01-01', @quantity);SELECT @quantity;该存储过程通过接收一个订单日期作为输入参数,统计对应日期的订单数量,并将结果存储在输出参数中。

2. 创建一个存储过程,根据产品名称模糊查询对应的订单信息,并按照订单日期降序返回。

创建存储过程:DELIMITER //CREATE PROCEDURE SearchOrders(IN productName VARCHAR(100))BEGINSELECT * FROM Orders JOIN Products ON Orders.product_id = Products.idWHERE LIKE CONCAT('%', productName, '%')ORDER BY order_date DESC;END //DELIMITER ;调用存储过程:CALL SearchOrders('手机');该存储过程通过接收一个产品名称作为输入参数,根据该名称模糊查询对应订单的详细信息,并按照订单日期降序返回结果集。

mysql存储过程练习题

mysql存储过程练习题

mysql存储过程练习题MySQL存储过程练习题MySQL是一种常用的关系型数据库管理系统,它提供了存储过程的功能,可以将一系列SQL语句封装为一个可重复使用的代码块。

存储过程可以提高数据库操作的效率,并且可以实现复杂的业务逻辑。

在本文中,我们将介绍一些MySQL存储过程的练习题,帮助读者巩固对存储过程的理解和应用。

1. 创建一个存储过程,查询指定学生的成绩信息。

```sqlDELIMITER //CREATE PROCEDURE get_student_score(IN student_id INT)BEGINSELECT * FROM scores WHERE student_id = student_id;END //DELIMITER ;```这个存储过程接收一个学生ID作为参数,然后查询该学生的成绩信息并返回结果。

2. 创建一个存储过程,计算指定学生的平均成绩。

```sqlDELIMITER //CREATE PROCEDURE get_student_average_score(IN student_id INT, OUT average_score DECIMAL(5,2))BEGINSELECT AVG(score) INTO average_score FROM scores WHERE student_id = student_id;END //DELIMITER ;```这个存储过程接收一个学生ID作为输入参数,并将平均成绩作为输出参数返回。

3. 创建一个存储过程,查询指定科目的成绩最高和最低的学生。

```sqlDELIMITER //CREATE PROCEDURE get_top_bottom_student(IN subject_id INT, OUTtop_student VARCHAR(50), OUT bottom_student VARCHAR(50))BEGINSELECT student_name INTO top_student FROM scores WHERE subject_id = subject_id ORDER BY score DESC LIMIT 1;SELECT student_name INTO bottom_student FROM scores WHERE subject_id= subject_id ORDER BY score ASC LIMIT 1;END //DELIMITER ;```这个存储过程接收一个科目ID作为输入参数,并将成绩最高和最低的学生姓名作为输出参数返回。

SQL存储过程试题及答案

SQL存储过程试题及答案

--写存储过程及调用存储过程/*1.写出创建分数存储过程用于计算某门课程成绩最高分、最低分、平均分,参数课程号。

*/--2.写出统计某门课选人数的存储过程,输入参数课程号,输出参数人数。

/*3.创建存储过程,要求根据学生姓名查看学生的籍贯.(要求:在存储过程里定义两个参数,第一个接收由调用程序指定的输入值(学生姓名),第二个参数用于将该值返回调用程序)*//*4.程序员工资表:ProWage字段名称数据类型说明ID int 自动编号,主键PName Char(10) 程序员姓名Wage int 工资创建一个存储过程,对程序员的工资进行分析,月薪1500到10000不等,如果有百分之五十的人薪水不到2000元,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为止,存储过程执行完后,最终加了多少钱?例如:如果有百分之五十的人薪水不到2000,给所有人加薪,每次加100元,直到有一半以上的人工资大于2000元,调用存储过程后的结果如图:请编写T-SQL来实现如下功能:查询是否有一半程序员的工资在2200、3000、3500、4000、5000或6000元之上,如果不到分别每次给每个程序员加薪100元,至之一半程序员的工资达到2200,3000,3500,4000,5000或6000元。

/*5.编写一个存储过程PR_GET_PASS_RA TE统计某门课程的及格率,其传入参数是课程号P_CNO,传出参数是该课程成绩的及格率P_PASSRATE,及格率的格式形如:86.56%。

6.创建触发器T_1,功能是当向数据表学生添加记录时,显示学生的信息。

create trigger T_1 on 学生after insertas select * from 学生insert into 学生values('3001','李四','男','计本10')7.创建触发器T_2,功能是当向数据表班级添加、修改和删除记录时,显示学生的信息。

存储过程面试题

存储过程面试题

存储过程面试题存储过程是数据库中的重要概念之一,也是面试中常被问到的知识点。

本文将介绍一些常见的存储过程面试题,帮助读者更好地理解和掌握存储过程的相关知识。

一、什么是存储过程?存储过程是一组预定义的SQL语句集合,可以在数据库中进行声明、定义和调用。

它可以看作是一种封装的、可重复使用的数据库操作,通常用于处理复杂的业务逻辑或者频繁执行的数据库操作。

二、存储过程的优缺点是什么?1. 优点:- 提高数据库的性能:存储过程在数据库中被编译和优化,执行速度比独立SQL语句快。

- 减少网络流量:存储过程在数据库中执行,只传输执行结果,减少了网络流量。

- 保护数据安全:存储过程可以实现对数据的权限控制,提高数据的安全性。

- 降低开发难度:存储过程可以将复杂的业务逻辑封装起来,方便开发和维护。

2. 缺点:- 存储过程的编写比较复杂,需要一定的编程技巧和经验。

- 存储过程在数据库中执行,对数据库的依赖性比较高,不够灵活。

- 存储过程的调试和测试相对困难,一般需要专门的工具和环境。

三、如何创建存储过程?在MySQL数据库中,可以使用以下语法创建一个简单的存储过程:```DELIMITER //CREATE PROCEDURE procedure_name()BEGIN-- 存储过程的SQL语句END //DELIMITER ;```四、存储过程参数的类型有哪些?存储过程的参数可以分为输入参数(IN)、输出参数(OUT)和输入输出参数(INOUT)三种类型。

1. 输入参数(IN):用于向存储过程传递值,在存储过程内部不能修改。

2. 输出参数(OUT):用于从存储过程返回值,可以在存储过程内部进行修改。

3. 输入输出参数(INOUT):既可以传入值,又可以从存储过程返回值,并且可以在存储过程内部进行修改。

五、如何调用存储过程?在MySQL数据库中,可以使用以下语法调用一个存储过程:```CALL procedure_name();```六、如何传递存储过程的参数?在MySQL数据库中,可以使用以下语法传递存储过程的参数:```CALL procedure_name(parameter1, parameter2, ...);```七、存储过程如何返回结果集?存储过程可以通过定义输出参数或者使用游标来返回结果集。

数据库存储过程练习附答案

数据库存储过程练习附答案

存储过程、触发器练习1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。

create proc p_dept@dept char(20),@mannum int outputasselect @allcre=count(sno) from studentwhere sdept=@dept and ssex='男'declare @num intexec p_dept '计算机系',@num outputprint @num2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。

(使用输出参数)。

并执行该存储过程。

create proc p_cou@name char(10),@allcre int outputasselect @allcre=sum(ccredit)from student,course,scwhere student.sno=sc.sno and o=oand sname=@name group by sc.snodeclare @asum intexec p_cou '刘晨',@asum outputprint @asum3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。

CREATE TRIGGER mes_scON scFOR UPDATEASIF UPDATE(grade)BEGINROLLBACK TRANPRINT '学生成绩不能被修改,请与教务处联系'END4、创建一个insert触发器uninsertstu,当在student表中插入一条新纪录时,如果是“计算机系”的学生,则撤销该插入操作,并返回“此系人数已满,不能再添加”信息。

存储过程的面试题

存储过程的面试题

存储过程的面试题在数据库管理系统(DBMS)中,存储过程是一组预定义的SQL语句集合,可以在数据库中存储并且以单个单元的形式进行调用。

它们可以完成复杂的操作并且提供了许多好处,如简化数据库操作、提高性能和安全性等。

当你准备参加存储过程的面试时,可能会面临一些与存储过程相关的问题。

本文将介绍一些常见的存储过程面试题,并提供了详细的解答。

问题一:什么是存储过程?存储过程是一组预定义的SQL语句集合,存储在数据库中。

它们可以被视为一个函数,接收输入参数并且返回结果。

存储过程可以由应用程序通过调用数据库的API调用。

问题二:存储过程和函数之间有什么区别?存储过程和函数之间的主要区别在于函数返回一个值给调用者,而存储过程不返回值给调用者。

存储过程通常用于执行一系列的操作,比如插入、更新或删除数据。

另外,存储过程可以接收输出参数,这些参数可以在存储过程执行完毕后传递给调用者。

问题三:存储过程的优点是什么?存储过程有以下几个优点:1. 提高性能:存储过程可以在数据库中进行预编译,这意味着当存储过程被调用时,它们已经被编译并且存储在内存中。

这样可以节省解析和编译的时间,从而提高性能。

2. 简化复杂的操作:存储过程可以执行复杂的操作,如事务处理和错误处理。

它们可以将复杂的业务逻辑封装在一个单独的单元中,并且可以在多个地方进行调用。

3. 提高安全性:存储过程可以限制对数据库的直接访问,只允许通过存储过程访问数据库。

这样可以提高数据的安全性,防止恶意操作和注入攻击。

4. 降低维护成本:存储过程可以在数据库中进行维护和更新,这样可以方便地对其进行修改和调整,而不需要修改应用程序的代码。

问题四:存储过程如何调用?存储过程可以通过数据库的API调用或者SQL语句进行调用。

以下是两种常见的调用方法:1. 使用数据库的API调用:不同的数据库提供了不同的API来调用存储过程。

例如,在MySQL中可以使用CALL语句调用存储过程,而在Oracle中可以使用EXECUTE语句调用存储过程。

存储过程与触发器概念及应用考试

存储过程与触发器概念及应用考试

存储过程与触发器概念及应用考试(答案见尾页)一、选择题1. 存储过程是什么?A. 一种数据库对象,用于存储逻辑操作B. 一种数据库对象,用于存储查询语句C. 一种数据库对象,用于存储流程控制语句D. 一种数据库对象,用于存储数据2. 触发器的作用是什么?A. 在数据库中插入、更新或删除数据前自动执行的程序B. 在数据库中创建、修改或删除表C. 用于数据完整性约束D. 用于权限管理3. 存储过程和触发器都存放在以下哪个对象中?A. 数据库B. 表C. 索引D. 视图4. 存储过程可以通过哪种方式调用?A. SQL语句B. 外部程序调用C. 内部程序调用D. 以上都是5. 触发器的类型有哪几种?A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. ALL触发器6. 触发器的工作原理是在哪个事件发生时执行?A. 数据库打开时B. 数据库关闭时C. 数据被插入、更新或删除时D. 用户登录时7. 如何创建一个存储过程?A. 使用CREATE PROCEDURE语句B. 使用CREATE TABLE语句C. 使用ALTER TABLE语句D. 使用CREATE INDEX语句8. 触发器中的IF语句用于做什么?A. 进行条件判断B. 控制触发器的执行流程C. 计算数据D. 存储数据9. 在触发器中,哪个关键字表示不执行任何操作?A. ALLB. EXCEPTIONC. THEND. ELSE10. 触发器的执行顺序是怎样的?A. 从内到外,从上到下B. 从内到外,从下到上C. 从外到内,从上到下D. 从外到内,从下到上11. 触发器的功能是什么?A. 处理数据库中的数据完整性问题B. 执行数据库中的批量操作C. 监控数据库中的数据变化,并在特定事件发生时自动执行操作D. 管理数据库中的用户权限12. 存储过程与触发器都是数据库对象,它们的主要区别是什么?A. 存储过程用于存储查询结果,而触发器用于执行操作B. 存储过程可以有输入参数,而触发器不能C. 存储过程是预编译的,可以提高数据库性能,而触发器是运行时执行的D. 触发器只能由用户触发,而存储过程可以由任何具有权限的用户调用13. 下列哪个不是存储过程的特点?A. 可以接收参数B. 可以有多个输出参数C. 只能在数据库内部执行D. 可以直接修改数据库中的数据14. 触发器通常与哪个对象相关联?A. 数据库表B. 数据库视图C. 数据库索引D. 数据库存储过程15. 在MySQL中,触发器的类型有哪些?A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. SELECT触发器16. 触发器的工作原理是什么?A. 当对触发器关联的数据表进行指定类型的操作时,触发器自动执行预定义的操作B. 当数据库服务器启动时,触发器自动执行C. 当有新的连接连接到数据库时,触发器自动执行D. 当有用户登录到数据库时,触发器自动执行17. 如何在MySQL中创建一个存储过程?A. 使用CREATE PROCEDURE语句B. 使用CREATE FUNCTION语句C. 使用ALTER PROCEDURE语句D. 使用ALTER FUNCTION语句18. 触发器中可以使用哪些类型的条件判断?A. IF...ELSE语句B. CASE语句C. THEN...ELSE语句D. ALL...IN语句19. 触发器可以分为几种类型?(多选)A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. SELECT触发器20. 存储过程和触发器都存放在哪种类型的数据库对象中?A. 表B. 序列C. 索引D. 视图21. 存储过程的类型有哪几种?A. 标准存储过程B. 用户定义存储过程C. 扩展存储过程D. 内置存储过程22. 下列哪个不是存储过程中的控制结构?A. IF...ELSEB. WHILEC. CASED. GOTO23. 触发器在什么情况下会被触发?A. 当表被添加或修改时B. 当数据库连接打开时C. 当用户登录时D. 当执行特定SQL语句时24. 如何使用存储过程?A. 使用CREATE PROCEDURE语句创建存储过程B. 使用ALTER PROCEDURE语句修改存储过程C. 使用DROP PROCEDURE语句删除存储过程D. 以上都是25. 触发器的主要优点是什么?A. 提高数据库性能B. 减少数据库维护成本C. 增加数据库安全性D. 以上都是26. 触发器的主要缺点是什么?A. 可能导致数据库性能下降B. 可能导致数据库死锁C. 可能导致数据库崩溃D. 可能导致数据库锁定二、问答题1. 什么是存储过程?请简述其特点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目一、
每个部门的前三个工资最高的员工
每个部门的前三档工资的所有员工
题目二、
users1
name company company_address url1
Joe ABC Work Lane ;
Jill XYZ Job Street ;
写PL/SQL来创建新表
users2
name company company_address url1
Joe ABC Work Lane
Joe ABC Work Lane
Jill XYZ Job Street
Jill XYZ Job Street
综合题目三、
create table C USTOMERS --客户表
(id number(8) primary key,taaccoid char(12),name varchar2(100),birthdate nu mber(8),certno varchar2(20),province number(8),age nu mber(4));
1 111000051346 李惠萍19780304 430111************
2 32
...
create table PR OVINCE --省份表
(id nu mber(8) primary key,name varchar2(100));
1 北京市
...
create table TA_SHARE --基金份额表
(taaccoid char(12),fundcode char(6),curshare nu mber(16,2));
111000051346 110002 5228.48
create table PR ODUC TS --基金产品表
(fundcode char(6),fund name varchar2(100));
110001 产品1
...
建立存储过程,输入参数:I_FUNDCODE --基金产品,I_PROVINC E --省份
输出参数:O_STA TUS --态值,R T_CURSOR --返回游标
返回如下表格的数据:
省份基金产品1~20岁(个)21~40岁(个)41岁以上(个)份额
分别在以上表上建立合理的索引,要求存储过程中写出的SQL必须不能对CR M_CUS TOMERS和CRM_TA_SHAR E进行全表扫描。

相关文档
最新文档