我有以下MySQL例程:
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `getGroupOrders`(grp INT,
ord CHAR(20),
srt CHAR(4),
page INT,
count INT)
BEGIN
SELECT *
FROM `dbre`.`order_info`
WHERE username IN (SELECT `dbre`.`users`.`username`
FROM `dbre`.`users`
WHERE `dbre`.`users`.`id_group` = grp)
ORDER BY ord srt LIMIT page,count;
END
正如你所看到的,我想传递排序列和排序作为参数,但是我得到一个语法错误是有办法做到这一点还是我必须为每种类型的排序做类似的例程?
答案 0 :(得分:1)
我认为这不可能是你尝试的方式。 您不能使用变量来定义ORDER BY列的方向。
我能想到的唯一解决方法是从动态创建的字符串创建预准备语句(您可以使用变量按详细信息指定顺序),然后执行该预准备语句。
以下是此类动态声明的示例: http://forums.mysql.com/read.php?98,393613,393642#msg-393642