感谢内容提供者:金牛区吴迪软件开发工作室
上一篇:数据库系统原理 - - (4)SQL与关系数据库基本操作
文章目录
- 一、存储过程
- 1)DELIMITER命令修改mysql结束符
- 2)使用CREATE PROCEDURE语句创建存储过程
- 3)使用CALL语句调用存储过程
- 4)使用DROP PROCEDURE语句删除存储过程
- 1)使用DECLARE语句声明局部变量
- 局部变量与用户变量的区别:
- 2)使用SET语句为局部变量赋值
- 3)使用SELECT...INTO语句把选定列的值直接存储到局部变量中
- 4)流程控制语句
- 5)使用DECLARE CURSOR语句创建游标
- 6)使用OPEN语句打开游标
- 7)使用FETCH...INTO语句读取数据
- 8)使用CLOSE关闭游标
- 二、存储函数
第五章:数据库编程
一、存储过程
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语句把选定列的值直接存储到局部变量中
4)流程控制语句
5)使用DECLARE CURSOR语句创建游标
6)使用OPEN语句打开游标
7)使用FETCH…INTO语句读取数据
8)使用CLOSE关闭游标
二、存储函数
1.什么是存储函数
存储函数与存储过程一样,是由SQL语句和过程式语句组成的代码片段。
2.创建存储函数
1)使用CREATE FUNCTION语句创建存储函数
CREATE FUNCTION sp_name([func_parameter[,...]])
RETURNS type
routine_body
2)什么是存储函数
存储函数与存储过程一样,是由SQL语句和过程式语句组成的代码片段
3)存储函数与存储过程的区别
3.调用存储函数
// 使用SELECT关键字调用存储函数
// func_parameter是函数参数
SELECT sp_name(func_parameter[,...])
4.删除存储函数
// 使用DROP关键字删除存储函数
// sp_name是要删除的存储函数的名字
DROP FUNCTION [IF EXISTS] sp_name;
下一篇:数据库系统原理 - - (6)数据库安全与保护