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

1.创建用户kaifa (密码亦为kaifa)并分配connect,create table,resource 权限。
tCREATE user KAIFA IDENTIFIED BY KAIFA DEFAULT TABLESPACE HOSDATATEMPOARY TABLESPACE TEMPDATA;GRANT CONNECT . CREATE TABLE • RESOURCE TO KAIFA2.在做报表统计时,需要根据报表日期和币种从概要表中查询本期余额。
其中币种代码如下:--RMB 人民币--CNY 本位币—USD 外币折美元如果币种为RMB,则取出人民币余额作为本期余额;为CNY,则取本位币余额;为USD 则取外币折美元余额。
请编写一个函数GetCurrBal (qrp.rq IN VARCHAR2. ―报表日期qrp_code IN VARCHAR2 —币种)CREATE OR REPLACE FUNCTION GetCurrBal(Vqrp_rq Date •—报表日期Vqrp.code VARCHAR2 一币种)RETURN NUMBERISVAMOUNT NUMBER :'DATE Date;BEGINSELECT ACCOUNTING.DATE INTO VDATE FROM CCB_GYBWhere ACCOUNTING_DATE = Vqrp_rq;IF Vqrp_code = 'RMB* THENSELECT RMB_YTD_BA1-ANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqip_code二r RMB*AND ACCOUNTING_DATE- VDATE;ELSEIF Vqrp.code = 'CNT THENSELECT CNY_YTD_BALANCII INTO VAMOUNT FROM CCB_GYB WHERE Vqip_code二'CNY';ELSESELECT USD_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code-END IF :END IF ;COMMIT;RETURN VAMOUNT;END;■一对多行处理.用游标一-多单行处理,用SELECT实现此功能,并能在sqlplus里调用。
SQL存储过程实例(练习和答案)

题目 1
1、学校图书馆借书信息管理系统建立三个表:
学生信息表:student
3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查
询结果如下图所示:
4)查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:
题目2
程序员工资表:ProWage
创建一个存储过程,对程序员的工资进行分析,月薪1500到10000不等,如果有百分之五十的人薪水不到2000元,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为
止,存储过程执行完后,最终加了多少钱?
元之
,3500,
题目3:
1) 查询各个学生语文、数学、英语、历史课程成绩,例如下表:
2)查询四门课中成绩低于70分的学生及相对应课程名和成绩。
3)统计各个学生参加考试课程的平均分,且按平均分数由高到底排序。
4)创建存储过程,分别查询参加1、2、3、4门考试及没有参加考试的学生名单,要求显示姓名、
学号。
数据库期末考试试题及答案

数据库期末考试试题及答案一、名词解释(每小题2分,共10分)1. 数据库(Database)2. 数据模型(Data Model)3. 表(Table)4. 字段(Field)5. 记录(Record)6. 主键(Primary Key)7. 外键(Foreign Key)8. 索引(Index)9. 视图(View)10. 存储过程(Stored Procedure)二、选择题(每小题2分,共20分)1. 下列哪个是关系型数据库管理系统?A. OracleB. MyBatisC. MongoDBD. Redis2. 在数据库中,哪个字段用于唯一标识一条记录?A. 字段名B. 数据类型C. 主键D. 索引3. 以下哪个不属于数据库的基本操作?A. 插入B. 删除C. 修改D. 格式化4. 下列哪个SQL语句用于创建表?A. SELECTB. INSERTC. CREATE TABLED. UPDATE5. 在SQL中,哪个关键字用于删除表?A. DROP TABLEB. DELETEC. ALTER TABLED. TRUNCATE TABLE6. 下列哪个SQL语句用于查询所有字段?A. SELECT FROM table_nameB. SELECT table_name FROMC. SELECT FROM table_nameD. SELECT table_name7. 以下哪个函数用于计算两个日期之间的差值?A. DATEDIFFB. TIMESTAMPDIFFC. DATE_ADDD. DATE_SUB8. 下列哪个SQL语句用于修改表的结构?A. MODIFY TABLEB. ALTER TABLEC. CHANGE TABLED. RENAME TABLE9. 下列哪个关键字用于创建外键约束?A. FOREIGN KEYB. CONSTRAINTC. PRIMARY KEYD. INDEX10. 以下哪个存储过程用于备份数据库?A. BACKUP DATABASEB. RESTORE DATABASEC. CREATE DATABASED. DROP DATABASE三、填空题(每小题2分,共20分)1. 在SQL中,用于插入数据的语句是______。
储存过程(答案)

单选题
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.写出创建分数存储过程用于计算某门课程成绩最高分、最低分、平均分,参数课程号。
*/--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,功能是当向数据表班级添加、修改和删除记录时,显示学生的信息。
MySQL数据库技术及应用 课后习题答案 (5)[3页]
![MySQL数据库技术及应用 课后习题答案 (5)[3页]](https://img.taocdn.com/s3/m/66de8665326c1eb91a37f111f18583d049640f85.png)
项目5一、选择题1、C2、B3、D4、A5、C6、A7、B8、C9、B10、D二、填空题1、系统变量用户变量局部变量2、BEGIN…END3、DELIMITER4、FOR EEACH ROW5、自动事务手动事务6、START TRANSACTION COMMIT三、判断题1、对2、对3、对4、错5、对6、对四、简答题1、答:存储过程具有如下优点:(1)模块化编程,代码可复用性好。
(2)具有更快的执行速度。
(3)减少网络通信量。
(4)增强系统的安全性。
存储过程与存储函数的区别如下4点:(1)语法中实现的标识符不同,存储过程使用PROCEDURE,函数为FUNCTION。
(2)存储过程在创建时没有返回值,而函数在定义时必须设置返回值。
(3)存储过程没有返回值类型,且不能将结果直接赋值给变量;而函数定义时需要设置返回值类型,且在调用时除在SELECT中,必须将返回值赋给变量。
(4)存储过程必须通过CALL进行调用,不能使用SELECT调用;而函数则可在SELECT 语句中直接使用。
2、答:游标的作用:游标提供了一种对SELECT语句结果集进行访问的机制。
可以将游标理解为一个在结果集中可以逐行移动的指针,它指向结果集中的某一行,用户可以用SQL 语句逐一从游标中获取记录,从而有选择地按行进行操作,而不是只能对整个结果集进行操作。
游标的使用主要包括声明游标、打开游标、移动游标指针并从游标结果集中读取数据和关闭游标4个步骤。
3、答:触发器是一种特殊的存储过程,主要用于保证数据的完整性和强制使用业务规则。
触发器具有以下优点:(1)触发器可以实现对数据库中的相关表的级联操作;(2)触发器可以用来定义比CHECK约束更复杂的限制;(3)触发器可以用来定义错误信息;(4)触发器可以用来实现更精细和更复杂的数据操作。
4、答:根据激活触发器时机的不同,MySQL触发器可以分为BEFORE触发器和AFTER 触发器两种类型。
SQL存储过程实例练习(答案)

SQL存储过程实例练习(答案)这篇是为了放的⼩练习答案1、写⼀个存储过程,该存储过程在给定CustomerID的参数下能返回Northwind数据库中的Customer记录。
2、写⼀个存储过程,该存储过程接受Territory ID、 Territory Description 和Region ID为参数,并且将它们作为新⾏插⼊到Northwind数据库中的Territories表中去。
3、修改练习2中的存储过程,并在插⼊前预先检查外键(RegionID)的存在。
如果RegionID不存在,则抛出⼀个含有错误消息为“RegionID is not valid。
Please check your RegionID and try again”的错误。
4、修改练习2中的存储过程,使之处理不存在RegionID时的异常。
捕获所有其他类型错误并提供通⽤的错误消息“An unhandledexception has occurred. Contact your system administration”。
/*1、写⼀个存储过程,该存储过程在给定CustomerID的参数下能返回Northwind数据库中的Customer记录。
*/GOUSE NorthwindGOCREATE PROC P_GetCustomerByID@CustomerID NCHAR(5)ASSELECT*FROM dbo.Customers WHERE CustomerID=@CustomerIDGO--EXEC P_GetCustomerByID 'ALFKI'/*2、写⼀个存储过程,该存储过程接受Territory ID、 Territory Description 和Region ID为参数,并且将它们作为新⾏插⼊到Northwind数据库中的Territories表中去。
*/GOUSE NorthwindGOCREATE PROC p_InsertTerritories@TerritoryID NVARCHAR(20),@TerritoryDescription NCHAR(50),@RegionID intASBEGININSERT INTO Territories(TerritoryID,TerritoryDescription,RegionID)VALUES(@TerritoryID,@TerritoryDescription,@RegionID)END--EXEC p_InsertTerritories '','',1/*3、修改练习2中的存储过程,并在插⼊前预先检查外键(RegionID)的存在。
【精选】第6章_存储过程与触发器练习题

有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与教师职称有关。
实现这个约束的可行方案是( )。
A 在教师表上定义一个视图B 在教师表上定义一个存储过程C 在教师表上定义插入和修改操作的触发器D 在教师表上定义一个标量函数参考答案C在SQL SERVER中,执行带参数的过程,正确的方法为()。
A 过程名参数B 过程名(参数)C 过程名=参数D ABC均可参考答案A在SQL SERVER服务器上,存储过程是一组预先定义并()的Transact-SQL 语句。
A 保存B 解释C 编译D 编写参考答案C在SQL Server中,触发器不具有()类型。
A INSERT触发器B UPDATE触发器C DELETE触发器D SELECT触发器参考答案D()允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。
A 存储过程B 规则C 触发器D 索引参考答案C为了使用输出参数,需要在CREATE PROCEDURE语句中指定关键字( )。
A OPTIONB OUTPUTC CHECKD DEFAULT参考答案B下列( )语句用于创建触发器。
A CREATE PROCEDUREB CREATE TRIGGERC ALTER TRIGGERD DROP TRIGGER参考答案B下列( )语句用于删除触发器。
A CREATE PROCEDUREB CREATE TRIGGERC ALTER TRIGGERD DROP TRIGGER参考答案D下列( )语句用于删除存储过程。
A CREATE PROCEDUREB CREATE TABLEC DROP PROCEDURED 其他参考答案C下列( )语句用于创建存储过程。
A CREATE PROCEDUREB CREATE TABLEC DROP PROCEDURED 其他参考答案Asp_help属于哪一种存储过程()?A 系统存储过程B 用户定义存储过程C 扩展存储过程D 其他参考答案A以下语句创建的触发器是当对表A进行()操作时触发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储过程、触发器练习
1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。
create proc p_dept
@dept char(20),@mannum int output
as
select @allcre=count(sno) from student
where sdept=@dept and ssex='男'
declare @num int
exec p_dept '计算机系',@num output
print @num
2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。
(使用输出参数)。
并执行该存储过程。
create proc p_cou
@name char(10),@allcre int output
as
select @allcre=sum(ccredit)from student,course,sc
where student.sno=sc.sno and o=o
and sname=@name group by sc.sno
declare @asum int
exec p_cou '刘晨',@asum output
print @asum
3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。
CREATE TRIGGER mes_sc
ON sc
FOR UPDATE
AS
IF UPDATE(grade)
BEGIN
ROLLBACK TRAN
PRINT '学生成绩不能被修改,请与教务处联系'
END
4、创建一个insert触发器uninsertstu,当在student表中插入一条新纪录时,如果是“计算机系”的学生,则撤销该插入操作,并返回“此系人数已满,不能再添加”信息。
create trigger unisnertstu
on student for insert
as
if exists(select*from inserted where sdept='计算机系')
begin
print'此系人数已满,不能再添加'
rollback transaction
end
4、创建一删除触发器tri_xs,功能是当某个学生从student表中被删除时,同时也删除sc表中该学生的相关记录。
USE 学生选课
GO
CREATE TRIGGER tri_xs
ON student
FOR DELETE
AS
DELETE sc
WHERE sno IN (SELECT sno FROM DELETED)
GO
5、在学生选课数据库中,创建一学生联系方式表stu_info(id,sno,sname,address,phone)。
其中id是自动编号。
并向该表中插入一条记录(0611105,李雷,汉正街5号,1111111)。
6、在创建的stu_info表中,查找是否有‘王梅梅’同学,如果
没有,则在此表中添加该记录(0611108,王梅梅,人民路1号,22222222),编程实现将此信息添加到表中。
declare @id int
set IDENTITY_INSERT stu_info ON
if exists(select * from stu_info where sname='王梅梅')
begin
print '此人已存在.'
end
else
begin
select @id=max(id) from stu_info
set @id=@id+1
insert into stu_info(id,sno,sname,address,phone) values(@id,'0611108','王梅梅','人民路1号','22222222') end。