我在我的架构上创建了一个名为“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);
)并获得相同的结果:
拨打
的返回
此语法适用于其他主机。
如果我使用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);
拨打
的返回
发生了什么事?为什么不定期调用SP会返回一个值?
答案 0 :(得分:0)
语法没有错。事实证明主机(在这种情况下,iPower)不允许在共享数据库服务器上进行存储过程调用:
07/27/2014 8:07 PM EDT IPOWER联系XXXXXX
评论:
你好,
共享平台不支持存储过程。
如果您有任何其他问题,请从中更新此票 支持控制台。
此致,
Kiran S技术专家