2010-12-15 3 views
1

У меня есть следующий MySQL рутина:Синтаксис SQL как параметры для 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

... что говорит синтаксическая ошибка? строка 3, строка 13 или что? – ajreal 2010-12-15 20:09:49

+0

ошибка синтаксиса находится в строке `ORDER BY`, где у меня есть параметры` ord` и `srt`, MySQL только говорит, что theres ошибка, но не говорит почему. – Triztian 2010-12-15 20:19:36

ответ

1

Я не думаю, что это возможно в том виде, в котором вы его пытаетесь. Вы не можете использовать переменную для определения столбца ORDER BY.

Единственным обходным решением, которое я могу придумать, является создание подготовленного оператора из динамически созданной строки (где вы можете использовать переменные для указания порядка по деталям), а затем выполнить этот подготовленный оператор.

Вот пример такого динамического оператора: http://forums.mysql.com/read.php?98,393613,393642#msg-393642

Смежные вопросы