1

我的系统:MySQL 5.6.12

由于您不能像函数一样在 SQL 语句中使用存储过程,所以我想知道只有 SELECT 语句但没有 OUT/INOUT 参数或进行一些操作的存储过程是否有任何用途。

例子:

DELIMITER //
CREATE PROCEDURE sp ()
    BEGIN
        SELECT * FROM tbl;
    END //
DELIMITER ;

我可以这样调用存储过程:

CALL sp();

它在 IDE 中显示了一个结果集,但除此之外,我看不到任何真正的实际用途。

我错过了什么吗?

4

2 回答 2

0

它所做的只是将查询的细节从调用者那里移开(这是一个有效的做法,简化了客户端代码并简化了模式迁移)。您不妨为此使用视图。

如果需要获取参数,我只会使用存储过程。

于 2016-01-14T23:46:31.473 回答
0

好吧,只是一个 SELECT 语句正在推动它;但是返回结果集的无参数存储过程有很多正当理由。Thilo的回答提到了主要的;为了增强...

如果经常需要特定的结果集(例如某种监控/仪表板数据)但过于复杂而无法放入 VIEW 中,则可以将所需的数据操作封装在这样的存储过程中,从而减少各种客户端重现的需要相同的确切步骤独立。

于 2016-01-15T00:04:21.863 回答