SELECT语句在MySQL存储的PROCEDURE中是否有意义?

时间:2016-01-14 23:39:46

标签: mysql sql procedure out inout

我的系统:MySQL 5.6.12

由于你不能在像函数这样的SQL语句中使用storede过程,我想知道是否有任何使用只有SELECT语句而没有OUT / INOUT参数的存储过程或者做什么一些操纵。

示例:

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

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

CALL sp();

它显示了IDE中的结果集,但除此之外,我无法看到任何真正实用的用法。

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

它只是将查询的详细信息从调用者移开(这是一个有效的事情,简化了客户端代码并简化了模式迁移)。你也可以使用一个视图。

如果需要参数,我只会选择存储过程。

答案 1 :(得分:0)

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

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