mysql存储函数和存储过程示例

例子一,输入两个数num1和num2,比如1和100,返回1一直加到100的结果

存储函数

DETERMINISTIC 
BEGIN
	DECLARE result INT DEFAULT 0;
	WHILE num1 <= num2 DO 
		set result = num1 + result;
		SET num1 = num1 +1;
	END WHILE;
	RETURN(result);
END

这里主要就提一下为什么要加上DETERMINISTIC ,如果不加的话,会报This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这样的错误,因为默认是开启了bin-log的

存储过程

BEGIN
	DECLARE result INT DEFAULT 0;
	WHILE num1 <= num2 DO 
		set result = num1 + result;
		SET num1 = num1 +1;
	END WHILE;
	SELECT result;
END

例子二,输入x,y,返回x的y次方

CREATE  PROCEDURE `pow_procedure`(IN `x` int,IN `y` int,OUT `rsp` int)
BEGIN
	set rsp = POW(x,y);
END

IN 表示入参 OUT表示返回值

CALL pow_procedure(2,3,@resp);
SELECT @resp;

调用存储过程的时候,返回的内容用变量@resp表示,然后存储过程执行完之后,返回结果就会存储到这个变量中,只要select这个变量,即可查看该存储过程的返回结果

-------------------------------------------------------------------------------------------------

很多旧的知识还是得多回顾,即使是动手重新做点简单的小例子,不然后面就真的全忘没了!

你可能感兴趣的:(sql)