自定义函数:用法和内置函数相同,自定义函数需要0个或者多个参数,有一个返回值。
创建自定义函数:
CREATE FUNCTION 函数名 RETURNS 返回值类型 函数主体关于函数主体:
函数主体由合法的sql语句构成复合结构需要用BEGIN...END...语句复合结构可以包含声明,循环,控制结构不带参数的自定义函数:
CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日%H点%i分%s秒‘) 调用 SELECT f1();带参数的自定义函数:
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) RETURNS FLOAT(10,2) UNSIGNED RETURN (NUM1+NUM2)/2;调用SELECT(1,2);存储过程是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单位处理;存储过程的优点是可以增强sql语句的灵活性,实现较快的执行速度
参数类型:
IN,表示该参数的值必须在调用的适合被指定OUT,表示该参数的值可以被存储过程改变,并返回INOUT,表示该参数在调用时被指定,并且可以被改变和返回存储过程的语法和自定义函数差不多:
CREATE PROCEDURE 存储过程的名称 (参数) BEGIN 具体的过程体 END不带参数的存储过程:
DETIMITER // CREATE PROCEDURE sp1() SELECT VERSION(); 调用 CALL SP1();带IN参数的存储过程:
DELIMITER // CREATE PROCEDURE removeUserById(IN pid INT UNSIGNED) BEGIN DELETE FROM users WHERE pid=id; END DELIMITER ; 调用 CALL removeUserById(22);带IN和OUT参数的存储过程:
CREATE PROCEDURE removeUserByAgeAndReturnInfos(IN page SMALLINT UNSIGNED,OUT deleteUsers,OUT userCounts) BEGIN DELETE FROM users WHERE age=page; SELECT ROW_COUNT() INTO deleteUsers; SELECT COUNT(id) FROM users INTO userCounts; END 调用 CALL removeUserByAgeReturnInfos(23,@a,@b); SELECT @a,@b;
转载于:https://www.cnblogs.com/mesunyueru/p/9019728.html
相关资源:MySQL自定义函数和存储过程示例详解