原文链接-定义变量
原文链接-存储函数
原文链接-存储过程
原文链接-游标简介
原文链接-触发器和事件简介
存储函数和存储过程都属于存储例程,都是对某些语句的一个封装。存储函数侧重于执行这些语句并返回一个值,而存储过程更侧重于单纯的去执行这些语句
创建存储过程
存储过程与存储函数最直观的不同点就是,存储过程的定义不需要声明返回值类型
CREATE PROCEDURE 存储过程名称([参数列表])
BEGIN
需要执行的语句
END
delimiter $
CREATE PROCEDURE t1_operation(mValue INT, nValue CHAR(1) )
BEGIN
SELECT * FROM t1;
INSERT INTO t1(m1, n1) VALUES(mValue, nValue);
SELECT * FROM t1;
END $
delimiter ;
存储过程的调用
CALL 存储过程([参数列表]);
CALL t1_operation(4, 'd');
查看/删除
SHOW CREATE PROCEDURE 存储过程名称
DROP PROCEDURE 存储过程名称
参数类型
参数类型 参数名 数据类型

-
IN参数类型的变量只能用于读取,对类型的变量赋值是不会被调用者看到的。
因为对于参数类型是IN的参数,我们只是想在存储函数执行中使用它,并不需要把执行结果存储到它里边,所以除了让变量作为函数参数,常量也是可以的。 -
OUT参数类型的变量只能用于赋值,对类型的变量赋值是会被调用者看到的。
因为由于OUT参数类型的参数只是为了用于在过程中赋值后被调用者查看,那实际的参数就不允许是常量,常量还怎么赋值啊。 -
参数的类型默认是IN
delimiter
CREATE PROCEDURE p_in ( IN arg INT)
BEGIN
-- 语句一:读取参数
SELECT arg;
-- 语句二:为参数赋值
SET arg = 123;
END
delimiter ;
存储过程和存储函数的区别
-
存储函数在定义时需要显式用RETURNS语句标明返回的数据类型,而且在函数体中必须使用RETURN语句来显式指定返回的值,存储过程不需要。
-
存储函数的参数类型只能是IN,而存储过程支持IN、OUT、INOUT三种参数类型。
-
存储函数只能返回一个值,而存储过程可以通过设置多个OUT类型的参数来返回多个结果。
-
存储函数执行过程中产生的结果集并不会被显示到客户端,而存储过程执行过程中产生的结果集会被显示到客户端。
-
存储函数的调用直接使用在表达式中,而存储过程只能通过CALL语句来显式调用。
网友评论