我不是数据库专家,但我从一个看起来有点严重无能但偶尔会发光发热的人那里继承了相当大的生产 MySQL 数据库的一些责任。大多数问题我都能够自己解决,但是这个问题让我很困惑,我还没有看到任何地方解决它:
是否有任何理智的理由让存储过程只不过是准备好的语句的包装器?
这些方面的东西:
CREATE PROCEDURE foo_search (IN searchParam1 int, IN searchParam2 varchar(255))
BEGIN
SET @local1 = searchParam1;
SET @local2 = searchParam2;
PREPARE stmt FROM
'...'; --Fairly complex nested select statement
EXECUTE stmt USING @local1, @local2;
END
就是这样。我对准备好的语句的理解是,它们的好处在于清理输入(已经由我们使用的 PHP 框架处理),并减少来回通信(在存储过程中受到损害)。
这是纯粹而简单的毫无意义的疯狂,还是我错过了什么?