变量
SET @e = '';
SET @e = '1';
SELECT salary INTO @e
FROM employee;
SELECT @e;
DECLARE t INT DEFAULT;
SET t = xx;
SELECT t;
储存过程
- 储存过程和函数都类似于java中的函数
- 注意因为包含多个分号,以便和结束符区分,一般用delimiter 符号来另设结束符;
- 例如delimiter ?,就是把?当做结束符
-
语法
CREATE PROCEDURE 储存过程名(储存模式 形参名 数据类型,...)
BEGIN
END ?
call 储存过程名(实参)
delimiter ?
CREATE PROCEDURE swap(INOUT n INT,INOUT m INT)
BEGIN
DECLARE tmp INT DEFAULT n;
SET n = m;
SET m = tmp;
SELECT n,m;
END ?
SET @n = 1?
SET @m = 0?
CALL swap(@n,@m)?
SELECT @n,@m?
-
储存 模式
- IN 这个参数需要传入值
- OUT 这个参数传出值
- INOUT 这个参数极传入又传出
函数
CREATE FUNCTION 函数名(形参名 形参类型) RETURNS 返回值类型
BEGIN
END ?
CREATE FUNCTION f(n INT) RETURNS VARCHAR(2)
BEGIN
SET @q = '';
CASE
WHEN n=1 THEN RETURN '1';
WHEN n=0 THEN RETURN '0';
ELSE RETURN '2';
END ;
END ?
SELECT f(实参)
- 注意第一行的returns加s,内部的return不加
- sql中函数和java中函数作用基本类似
储存过程和函数
- 形参列表不同
- 语法的第一行,函数需要RETURNS声明返回值类型
- 储存过程可以返回多个值,而函数有且仅有一个返回值
- 储存过程调用需要CALL XX(实参) 函数直接xx(实参)