感谢内容提供者:金牛区吴迪软件开发工作室


上一篇:数据库系统原理 - - (4)SQL与关系数据库基本操作


文章目录





第五章:数据库编程

一、存储过程

1.存储过程的基本概念


存储过程是一组为了完成某项特定功能的SQL语句集,其实质就是一段存储在数据库中的代码。
它可以由声明式的sql语句和过程式语句组成


存储过程是一组为了完成某项特定功能的SQL语句集,其实质就是一段存储在数据库中的代码。

  • 可增强SQL语言的功能和灵活性
  • 良好的封装性
  • 高性能
  • 可减少网络流量
  • 可作为一种安全机制来确保数据库的安全性和数据的完整性

2.创建存储过程

1)DELIMITER命令修改mysql结束符


DELIMITER $$


// 示例:将MySQL结束符修改为俩个感叹号"!!"
DELIMITER !!

// 示例:回到";"结束
DELIMITER ;
2)使用CREATE PROCEDURE语句创建存储过程
// 示例:在test中创建一个存储过程,用于实现给定表customers中一个客户id号即可修改表customers中改客户的性别为一个指定的性别
USE test;
DELIMITER $$
CREATE PROCEDURE update_sex(IN cid INT,IN csex CHAR(4))
BEGIN
UPDATE customers
SET sex=csex
WHERE id=cid;
END $$
3)使用CALL语句调用存储过程
// 调用数据库test中的存储过程update_sex,将客户id号为909的客户性别修改为“M”
CALL update_sex(99,'M'); // 如果你之前改了结束符,请改回;号,或者使用你改了的结束符进行结束语句
4)使用DROP PROCEDURE语句删除存储过程
DROP PROCEDURE update_sex;

3.存储过程体

1)使用DECLARE语句声明局部变量
DECLARE var_name[,...] type [DEFAULT value]
// 例子
// 声明一个整型局部变量cid
DECLARE cid INT(10);


1、只能在存储过程体的BEGIN。。。END语句块中声明;
2、必须在存储过程的开头处声明;
3、作用范围仅限于声明它的BEGIN。。。END语句块;
4、不同于用户变量;


局部变量与用户变量的区别:

1、局部变量声明时,在其前面没有@符号,并且它只能被声明它的BEGIN、、、END语句块中的语句所使用;

2、用户变量在声明时,会在其名称前面使用@符号,同时已声明的用户变量存在于整个会话之中。

2)使用SET语句为局部变量赋值
SET var_name=1;
3)使用SELECT…INTO语句把选定列的值直接存储到局部变量中

数据库系统原理 - - (5)数据库编程_数据库

4)流程控制语句

数据库系统原理 - - (5)数据库编程_数据库编程_02

数据库系统原理 - - (5)数据库编程_数据库编程_03

5)使用DECLARE CURSOR语句创建游标

数据库系统原理 - - (5)数据库编程_数据库编程_04

6)使用OPEN语句打开游标

数据库系统原理 - - (5)数据库编程_数据库系统原理_05

7)使用FETCH…INTO语句读取数据

数据库系统原理 - - (5)数据库编程_数据库系统原理_06

8)使用CLOSE关闭游标

数据库系统原理 - - (5)数据库编程_mysql学习_07

二、存储函数

1.什么是存储函数

存储函数与存储过程一样,是由SQL语句和过程式语句组成的代码片段。

2.创建存储函数

1)使用CREATE FUNCTION语句创建存储函数
CREATE FUNCTION sp_name([func_parameter[,...]])
RETURNS type
routine_body

数据库系统原理 - - (5)数据库编程_数据库系统原理_08

2)什么是存储函数

存储函数与存储过程一样,是由SQL语句和过程式语句组成的代码片段

3)存储函数与存储过程的区别

数据库系统原理 - - (5)数据库编程_数据库系统原理_09

3.调用存储函数

// 使用SELECT关键字调用存储函数
// func_parameter是函数参数
SELECT sp_name(func_parameter[,...])

4.删除存储函数

// 使用DROP关键字删除存储函数
// sp_name是要删除的存储函数的名字
DROP FUNCTION [IF EXISTS] sp_name;

下一篇:数据库系统原理 - - (6)数据库安全与保护