定期调用存储过程不会返回记录

时间:2014-07-24 18:58:34

标签: mysql stored-procedures phpmyadmin

我在我的架构上创建了一个名为“get_cat”的存储过程:

DELIMITER $$
CREATE PROCEDURE get_cat(
    IN  p_cat_id            int(11),
    IN  p_alumni            varchar(10),
    IN  p_status            varchar(10),
    IN  p_order_by          varchar(100),
    IN  p_limit_start       int(11),
    IN  p_limit_end     int(11)
)
    BEGIN
        SELECT *
        FROM Cats
        WHERE cat_id=CASE WHEN p_cat_id=0 THEN cat_id ELSE p_cat_id END
            AND alumni=CASE WHEN p_alumni='' THEN alumni ELSE p_alumni END
            AND status=CASE WHEN p_status='' THEN status ELSE p_status END
        ORDER BY p_order_by
        LIMIT p_limit_start, p_limit_end;
    END$$
DELIMITER ;

相关“猫”字段的排序规则为latin1_swedish_ci


当我使用PDO连接通过PHP调用存储过程(CALL get_cat(678, '', '','Name ASC', 0, 500);)时,不会返回任何值,但它不会出错。所以我启动phpMyAdmin并尝试相同的调用(CALL get_cat(678, '', '','Name ASC', 0, 500);)并获得相同的结果:

拨打 Regular syntax call to stored procedure返回 Result returned from regular syntax call to stored procedure 此语法适用于其他主机。


如果我使用phpMyAdmin执行该过程,它会生成此语法, 返回预期记录:

SET @p0='678'; SET @p1=''; SET @p2=''; SET @p3='Name ASC'; SET @p4='0'; SET @p5='500'; CALL `get_cat`(@p0, @p1, @p2, @p3, @p4, @p5); 

拨打 Executing the same stored procedure through phpMyAdmin返回 Results from executing the same stored procedure through phpMyAdmin


发生了什么事?为什么不定期调用SP会返回一个值?

1 个答案:

答案 0 :(得分:0)

语法没有错。事实证明主机(在这种情况下,iPower)不允许在共享数据库服务器上进行存储过程调用:

  

07/27/2014 8:07 PM EDT IPOWER联系XXXXXX

     

评论:

     

你好,

     

共享平台不支持存储过程。

     

如果您有任何其他问题,请从中更新此票   支持控制台。

     

此致,

     

Kiran S技术专家