我有以下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

如您所见,我想将ordering列和sorting作为一个参数传递,但是我得到一个语法错误有没有办法这样做,或者我必须为每种类型的ordering创建类似的例程?

最佳答案

我认为你这样做是不可能的。
不能使用变量按列和方向定义顺序。
我能想到的唯一解决方法是从动态创建的字符串创建一个准备好的语句(在该字符串中,您可以使用变量按细节指定顺序),然后执行该准备好的语句。
下面是这样一个动态语句的示例:
http://forums.mysql.com/read.php?98,393613,393642#msg-393642

08-28 13:39