Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

dbExpress в Delphi

Hi people!

Использую компонент TSQLQuery из закладки dbExpress. Проблема при использовании
в SQL запросе параметров - он почему-то все подстановки заключает в одинарные
кавычки. Например, использую запрос
SELECT *
FROM albums
LIMIT :start, 30

мне нужно чтобы подставленное значение было без кавычек, иначе происходит синтаксическая
ошибка при выполнении запроса. Использование типа integer вместо string'а результатов
не дает

Ответить   Fri, 17 Jun 2005 00:36:03 +0600 (#386195)

 

Ответы:

Friday, June 17, 2005, 12:36:03 AM, you wrote:

синтаксическая

результатов

var
somestring, start: string;

somestring='SELECT * FROM albums LIMIT '+start+', 30';

Ответить   andrey Fri, 17 Jun 2005 08:41:49 +0600 (#386575)

 

Hi people,

Спасибо, так я и думал.
Только зачем параметры нужны, часто ведь и числа задавать приходиться? Я из справки
так понял, что они еще и каким-то образом вроде оптимизируются при запросе?

Ответить   Fri, 17 Jun 2005 21:12:17 +0600 (#386754)

 

Friday, June 17, 2005, 9:12:17 PM, you wrote:

справки

Тебе главное передать серверу баз данных корректную строку символов.
Как ты их будеши оптимизировать до того - твои проблеммы (я имею в
виду конвертацию чисел в текст или наоборот), главное - на выходе, в
запрос должна поступить строка.
Как их сервер будет оптимизировать - его проблеммы. Создателя
прикладного программного обеспечения это не должно волновать - он все
равно, как правило, к серверу доступа не имеет.
Надо ориентироваться на здравый смысл администратора сервера, а не
мутить что либо самому - уверяю вас, из этого ничего хорошего не
выйдет (я имею в виду - востребованного продукта).

Ответить   andrey Sat, 18 Jun 2005 00:04:43 +0600 (#386846)

 

справки

Прошу прощения за некоторый оффтопик, возможно, я лезу в дебри, но
ситуация требует некоторого уточнения.
Конечно, как будет программист оптимизировать текст запроса с точки зрения
возможной конвертации типов, это обычно его проблемы.
Однако на прикладного программиста ложится и ответственность за учет
особенностей СУБД, для которой он пишет запрос. Это относится в
частности к использованию параметров. Некоторые СУБД, например
Oracle, хранят кэш разобранных запросов, поэтому использование идентичных
запросов с параметрами иногда позволяет заметно снизить требования
к ресурсам и загрузку сервера. Представьте каково серверу, который сотня
пользователей заставляет разбирать тысячи запросов, отличающихся
лишь литералами. Бесполезная трата времени и памяти.
Администратор СУБД иногда, конечно, может что-то сделать, но
обычно предъявляет претензии разработчику.
И приходится признать, что он прав.
Так что полностью переложить ответственность за обработку запросов на
администратора невозможно, тем более, если запрос сложный и
требуется явно указывать порядок исполнения,
в общем "мутить что либо самому" :).

На это утверждение ничего ответить не могу, не приходилось пользоваться
dbExpress. Хотя у меня было о нем почему-то положительное
мнение, может потому, что это не BDE :)
Однако если не удается заставить dbExpress подставлять переменные
без кавычек, или переменные не поддерживает используемая
СУБД, придется, как здесь уже писали, явно формировать
строку запроса. Что ж, бывает...

Номер выпуска : 4689
Возраст листа : 638 (дней)
Количество подписчиков : 531
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/387587
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Mon, 20 Jun 2005 02:30:44 +0400 (#387587)