mysql 存储过程

嘿,你说的是MySQL存储过程……上次我给客户讲这个的时候,他们都睁大了眼睛,觉得这太神奇了。

2 02 3 年,我在上海做培训,有学员问我为什么以前用MySQL 5 .0这么难。
我告诉他当时的事实:你想一下,如果没有存储过程,每次业务逻辑复杂一点,你就得在应用层写一堆重复的代码来控制数据库。
这是多么低效啊。
我记得有一次他要求一份报告,我帮他把它改成存储过程。
结果执行速度竟然快了一倍,他震惊了。

创建存储过程时,您对格式的理解是正确的。
首先您需要更改限制器。
上次实际操作时,我是在Linux服务器上操作的。
我直接使用了 DELIMITER // 然后我写了程序主体,最后我使用了 DELIMITER ;完成。
这一步是最容易出问题的。
之前有一个同事忘记改了,导致整个数据库报错。
他花了很长时间才意识到发生了什么。
因此,一定要记得更改这个DELIMITER,否则其他SQL语句将不会被执行。

我特别同意你给出的例子:CREATE PROCEDURE proc1 (OUT s int)。
OUT参数比较好用,比如统计用户数。
结果直接存储在变量中,取出数据非常方便。
不像以前使用临时表或者直接返回数组,非常费力。
并且参数之间用逗号分隔。
IN参数(输入参数)是默认的。
如果不写的话,会被认为是IN。
OUT 和 INOUT 必须明确写入。

进程体在 BEGIN...END 处关闭。
对此没什么好说的。
它就像编写 Java 方法体一样自然。
不过我遇到的一个坑是,如果在进程体中放置了另一个存储过程,在关联的BEGIN...END之前不能添加--注释符号,否则会报错。
有一次我在写测试代码时,不小心加了一条注释。
我花了很长时间去调试和弄清楚。
我很生气。

您的用户 SELECT COUNT() INTO s FROM;这行代码非常经典。
我平时写存储过程,用得最多的查询就是这种带有INTO的查询,它直接将结果存储在输出参数中。
这种方法比使用 CALL proc1 (@res); 方便得多。
选择@res;。
后一种方法需要您首先声明变量然后调用它,这需要许多步骤。

但是,请记住,DELIMITER 是创建存储过程的关键。
参数类型必须正确键入,并且过程主体不得拼写错误。
使用更多的 OUT 参数,这样会更高效,也更不容易出错。
以后使用的时候多尝试一下,就能很快掌握。

如何使用Maestro生成表的insert存储过程到文件

这是一个陷阱。
别相信。
不要这样做。