MySQL 中的 “存储过程” :
- 为以后的使用而保存的一条或多条MySQL语句的集合
- 即:将sql打包,集中处理,类似于批处理,但是优于批处理
- 类似于其他编程语言的自定义函数
(鉴于开发中很少使用mysql命令行,所以下面的例子均基于如dbeaver这样的客户端开发)
创建存储过程:
CREATE PROCEDURE database1.testproc()
BEGIN -- BEGIN 和 END 之间的是 过程体
SELECT * FROM database1.testtb;
END;
注意:procedure在创建时也要指明是哪个库下的
调用存储过程:
CALL database1.testproc(); -- 返回的结果就是 SELECT * FROM database1.testtb; 的结果
带参数:
CREATE PROCEDURE tobase3.testproc(
OUT arg1 varchar(30), -- OUT 表示输出参数,相当于return
OUT arg2 varchar(30)
)
BEGIN
SELECT 'aaa' INTO arg1;
SELECT 'bbb' INTO arg2;
END;
CALL tobase3.testproc(@arg1,@arg2); -- 调用过程
SELECT @arg1, @arg2;
-- 结果:
@arg2|@arg1|
-------|--------|
bbb |aaa |
传参:
CREATE PROCEDURE tobase3.testproc(
IN inarg varchar(30), -- 待传入的参数
OUT outarg varchar(30) -- 过程返回的值
)
BEGIN
SELECT CONCAT('aaa',inarg) INTO outarg ; -- 把最终结果赋给返回的变量
END;
CALL tobase3.testproc('tom',@outaag); -- 调用过程
SELECT @outaag; -- 验证
----------------------
持续更新中······