内卷能让一个群体的内部变得异常的精致,但是本质上却完完全全没有任何的进步,并且会导致更多没必要的资源浪费以及带来更加激烈的竞争。它是zbzy社会下劳动力过剩的必然现象。
存储过程结构
存储过程
一组预先编译好的SQL语句集合,能提高效率
结构体结尾每条语句必须要求加分号
适合批量更新
创建
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(合法有效的SQL语句)
END
参数列表
参数模式 参数名 参数类型
测试例:
IN stuname VARCHAR(20)
参数模式:
IN :该参数作为输入口,需要调用方传入值
OUT:该参数作为输出口,该参数可作为返回值
INOUT:该参数可输入输出,既可以传入值,又可以返回值
DELIMITER
建立一个结束标记,SQL到这里时才会执行之前的所有语句(;会被忽略)
语法:
DELIMITER 结束标记
测试例:
DELIMITER ♂
调用语法
CALL 存储过程名(实参列表);
空参列表
测试例:
向某表插入五条记录
DELIMITER ♂
CREATE PROCEDURE myp1()
BEGIN
INSERT INTO admin(name,zid)
VALUES(‘114514’,’114514’),(‘114514’,’114514’),(‘114514’,’114514’),(‘114514’,’114514’)(‘114514’,’114514’)
END
♂
CALL myp1() ♂//调用
带IN模式的参数
创建存储过程实现根据舰船名,查询对应的舰长信息
DELIMITER ♂
CREATE PROCEDURE myp2(IN unsc_ship_id VARCHAR(20))
BEGIN
SELECT ship.captain
FROM unsc_star_ship ship
LEFT JOIN unsc_captain capt
ON ship.captain=capt.name
WHERE ship.id=unsc_ship_id;
END ♂
CALL myp2(‘凯斯’)//调用(如果出现了下面这种类似的情况,可能是字符集的问题)
用户登录
CREATE PROCEDURE
myp3(IN username VARCHAR(20),IN ‘password’VARCHAR(20))
BEGIN
DECLARE result VARCHAR(20) DEFAULT ‘ ’;
SELECT COUNT(*) INTO result//将返回值给result
FROM admin
WHERE admin.username=username AND admin.password=‘password’
SELECT result;
END ♂
CALL myp2(‘田所浩二’,’114514’);
带OUT模式的参数
创建存储过程实现根据舰船名,返回对应的舰长名字
DELIMITER ♂
CREATE PROCEDURE
myp5(IN unsc_ship_id VARCHAR(20),OUT a_unsc_ship_name VARCHAR(20))
BEGIN
SELECT ship.captain_name INTO a_unsc_ship_name
FROM unsc_star_ship ship
LEFT JOIN unsc_captain capt
ON ship.captain=capt.name
WHERE ship.id=unsc_ship_id;
END ♂
SET @ship♂
CALL myp2(‘秋风之敦’,’@ship’)♂
带INOUT模式的参数
传入a,b两值,将a,b都翻倍后返回
传参需要传入有值的变量
DELIMITER ♂
CREATE PROCEDURE myp8(INOUT a INT,INOUT b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END ♂
SET @a=10♂
SET @b=20♂
CALL myp8(a,b)♂
删除存储过程
语法:
DROP PROCEDURE 存储过程名
//一次只能删除一个
查看存储过程(的结构)
语法:
SHOW CREATE PROCEDURE 存储过程名;