第11章MySQL存储过程与函数

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

数据库系统原理及MySQL应用教程(第2版)

课后习题参考答案

第11章MySQL存储过程与函数

1、存储过程和存储函数是在数据库中定义一些被用户定义的SQL语句集合。

二者存在以下几个区别:

1)存储过程实现的功能要复杂一点,而函数实现的功能针对性比较强。

2)存储过程可以返回参数,而函数只能返回值或者表对象。

3)存储过程可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。

4)存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用。

2、创建一个存储过程,根据学生的学号查询学生的姓名

create PROCEDURE getnamebysno(in xh char(10),out name char(20)) BEGIN

select sname into name from student where sno=xh;

调用该存储过程:call getnamebysno(‘1101’);

创建一个名为numstu的存储函数,查询学生的人数

Create function numstu()

Returns integer

Begin

Return(select count(*) from student);

调用:select numstu()

3、存储过程的优点:

◆存储过程增强了SQL语言的功能和灵活性

◆存储过程能实现较快的执行速度。

◆存储过程允许标准组件是编程。

◆存储过程能过减少网络流量。

◆存储过程可被作为一种安全机制来充分利用。

4、查看存储函数状态方法:

●通过show status语句

●如果要查看存储过程或函数的详细信息,要使用show create语句

5、游标是一个被SELECT语句检索出来的结果集。在存储了游标后,应用程序或用户就可以根据需要滚动或浏览其中的数据。

6、游标(cursor)具有以下特性:

●只读的,不能更新的

●不滚动的

●不敏感的,不敏感意为服务器可以活不可以复制它的结果表

(1)游标的声明:语法格式:declare cursorname cursor for select _ statement (2)打开游标:Open cursor_ name

(3)读取游标:fetch cursor_name into var_ name [,var_name] …(4) 关闭游标:close cursorname

7、CREATE PROCEDURE sp_update email(IN USer_name VARCHAR(50),IN e_mail VARCHAR(50))

UPDATE content SET email=e_mail WHERE username=user_name;

8、A 9 D 10 D 11 B

12

(1) create proceduce p1()

select dno,count(*) from emp group by dno;

(2) create proceduce p2(in gy char(10))

select * from emp where dno=gy;

(3) create proceduce p3()

select count(*) as 人数from emp where sex=’女’;

(4) create proceduce p4(in gy char(10))

select avg(empage) from emp where dno=gy;

call p4(‘11’);

(5) create proceduce p5(in age1 int, in age2 int)

select count(*),sum(empage) from emp where empage between age2 and age2;

(6) call p5(20,40);

drop proceduce p5;

(7) Create function name(no char(10))

Returns char(10)

Begin

Return(select empname from emp where empno=no);

End

(8) create function emp_age_count (iage1 int, age2 int)

Returns int

Begin

Return(select count(*) from emp where empage between age2 and age2); End

(9) drop function emp_age_count;

相关文档
最新文档