二级黄冈站,做网站工作描述,河北省建筑培训网,在线解压rar网站一、存储过程 概念#xff1a;存储过程是一组为了完成某项特定功能的SQL语句集#xff0c; 其实质就是一段存储在数据库中的代码。 它可以由声明式的sql语句和过程式sql语句组成。 特点#xff1a; 可增强SQL语言的功能和灵活性良好的封装性高性能可减少网络流量可作为一种安… 一、存储过程 概念存储过程是一组为了完成某项特定功能的SQL语句集 其实质就是一段存储在数据库中的代码。 它可以由声明式的sql语句和过程式sql语句组成。 特点 可增强SQL语言的功能和灵活性良好的封装性高性能可减少网络流量可作为一种安全机制来确保数据库的安全性和数据的完整性用户定义的结束符ELIMITER ELIMITER $$例句将MySQL结束符修改为两个感叹号“!!” DELIMITER !!使用CREATE PROCEDURE语句创建存储过程CREATE PROCEDURE sp_name([proc_parameter[,…]]) routine_body proc_paramete指定存储过程的参数列表 routine_body存储过程的主体部分也称为存储过程体 [IN | OUT | INOUT] param_name type参数 名参数类型 例如在mysql_test中创建一个存储过程用于实现给定表customers中一个客户id号即可修改表customers中该客户的性别为一个指定的性别 使用DECLARE语句声明局部变量DECLARE var_name[,…] type [DEFAULT value] 例如声明一个整型局部变量cid DECLARE cid INT(10); 使用DECLARE语句声明局部变量的规范 1只能在存储过程体的BEGIN…END语句块中声明 2必须在存储过程的开头处声明 3作用范围仅限于声明它的BEGIN…END语句块 4不同于用户变量局部变量与用户变量的区别 1局部变量声明时在其前面没有符号并且它只能 被声明它的BEGIN…END语句块中的语句所使用 2用户变量在声明时会在其名称前面使用符号同 时已声明的用户变量存在于整个会话之中。使用SET语句为局部变量赋值SET var_nameexpr[,var_nameexpr]… SET cid910; 使用SELECT…INTO语句把选定列的值直接存储到局部变量中 流程控制语句 1、条件判断语句 IF…THEN …ELSE语句 CASE语句 IF 条件 THEN 表达式1 ELSE 表达式2 END IF;2、循环语句 WHILE语句 REPEAT语句 LOOP语句WHILE 条件 表达式 END WHILE repeat 表达式 END repeat loop 表达式 END loop ITERATE语句 用于表示退出当前循环 ****************************游标CURSOR***************************************** 使用DECLARE CURSOR语句创建游标 使用OPEN语句打开游标OPEN cursor_name 使用FETCH…INTO语句读取数据 使用CLOSE语句关闭游标 CLOSE cursor_name **********************存储过程的使用************************ 使用CALL语句调用存储过程 调用数据库mysql_test中的存储过程sp_update_sex将客户id号为909的客户性别修改为男性“M” CALL sp_update_sex(909,’M’); 使用DROP PROCEDURE语句删除存储过程 DROP PROCEDURE[IF EXISTS] sp_name 二、存储函数 存储函数与存储过程一样是由SQL语句和过程式语句组成的代码片段 使用CREATE FUNCTION语句创建存储函数 CREATE FUNCTION sp_name([func_parameter[,…]]) RETURNS type routine_body sp_name指定存储函数的名称func_parameter指定存储函数的参数RETURNS type 声明存储函数返回值的数据类型 type指定返回值的数据类型 routine_body 指定存储函数的主体部分也称为存储函数体在数据库mysql_test中创建 一个存储函数要求该函数能根据 给定的客户id号返回客户的性别 如果数据库中没有给定的客户id号 则返回“没有该客户”。 Use mysql_test;
DELIMITER $$
CREATE FUNCTION fn_search(cid INT)
RETURNS CHAR(20)
DETERMINISTIC
BEGIN
DECLARE SEX CHAR(20);
SELECT cust_sex INTO SEX FROM customersWHERE cust_idcid;
IF SEX IS NULL THEN
RETURN(SELECT’没有该客户’);
ELSE IF SEX‘F’ THEN
RETURN(SELECT’女’);ELSE RETURN(SELECT ‘男’);END IF;END IF;
END $$ 使用关键字SELECT调用存储函数SELECT sp_name([func_parameter[, …]]) 使用DROP FUNCTION语句删除存储函数DROP FUNCTION [IF EXISTS] sp_name 转载于:https://www.cnblogs.com/jalja/p/11611440.html