Любая помощь здесь будет замечательной.Работа с параметрами Delphi XE7 Firedac
Я пытаюсь использовать параметры для динамического изменения «ORDER BY»
Ниже приведен код, я пытался, но, несмотря на следующий документации, которую я до сих пор получаю сообщение об ошибке «[FIREDAC] [Phys] [MYSQL] У вас есть ошибка в SQL синтаксисе ... рядом с "ORDER BY строки field" в строке 4'
Я поставил ParamCreate Истинных
Моей базы данных является MySQL
FDQuery1.Close;
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('SELECT *');
FDQuery1.SQL.Add('FROM my_table');
FDQuery1.SQL.Add('LIMIT 1000');
FDQuery1.SQL.Add(':id');
FDQuery1.ParamByName('id').AsString := 'ORDER BY some_field';
FDQuery1.Open;
предела последнего утверждение, а не заказ на – Passella
Деталей может различаться для разных серверов SQL, но в качестве общего предложения, вещи вы можете параметризовать в инструкции SELECT, довольно ограничены. Обычно вы можете параметризовать значения столбцов, которые должны быть сопоставлены в предложении WHERE, но не f.i. имена столбцов и/или таблиц. Я точно не знаю о MySql, но из первых принципов я бы не ожидал, что будет возможно параметризовать предложение ORDER BY. Если вы используете набор данных на стороне клиента, вам может быть повезло определить индекс с требуемым порядком поиска на нем. – MartynA
«Я бы не ожидал, что это будет возможно ...», потому что сервер не будет знать, когда запрос PREPAREd указывает, содержит ли предложение ORDER BY допустимые имена столбцов, а также не может оптимизатор запросов сервера сервера выполнять свою работу в неизвестное выражение/clause, которое может быть чем угодно, а не просто ORDER BY. – MartynA