Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Внизкак узнать результирующий текст запроса с параметрами Найти похожие ветки
← →
July (2004-04-07 13:57) [0]Кто-нибудь знает, есть ли какая-нибудь возможность узнать
итоговый текст запроса с параметрами,
который выполняется на сервере?
Т.е. когда там уже вместо параметров подставляются их значения.
С помощью breakpoint удается только увидеть значения
параметров по отдельности в определенный момент,
а вот как бы запрос целиком увидеть?
sql.text - все тот же текст с :param1, :param2 и т.д.
← →
July (2004-04-07 13:57) [0]Кто-нибудь знает, есть ли какая-нибудь возможность узнать
итоговый текст запроса с параметрами,
который выполняется на сервере?
Т.е. когда там уже вместо параметров подставляются их значения.
С помощью breakpoint удается только увидеть значения
параметров по отдельности в определенный момент,
а вот как бы запрос целиком увидеть?
sql.text - все тот же текст с :param1, :param2 и т.д.
← →
VLAD-MAL (2004-04-07 14:10) [1]Нельзя. Не существует в природе. На сервак сначала пересылается текст параметризованного запроса, потом он компилится на серваке во внутреннее представление (Prepare), потом ты просто много-много раз пересылаешь параметры для запроса и просто забираешь результат.
← →
VLAD-MAL (2004-04-07 14:10) [1]Нельзя. Не существует в природе. На сервак сначала пересылается текст параметризованного запроса, потом он компилится на серваке во внутреннее представление (Prepare), потом ты просто много-много раз пересылаешь параметры для запроса и просто забираешь результат.
← →
July (2004-04-08 12:30) [2]Спасибо за ответ. Не могу сказать, что он меня порадовал :)
Какой-то глюк наблюдался с передачей текстовых параметров,
решить не удалось - уже и кавычки все перепроверили, и длины
строк. Тот же запрос ручками с теми же конкретными значениями
- работает. С параметрами - ошибка. IBExpert вообще access violation вываливает.
Основная проблема - если просто писать условие проверки на
равенство строк разной длины (например ""="аб") -
нормально обрабатывается и получается, естественно, ложь,
а если тоже самое передавать в виде параметров - ошибка.
Это как-то объясняется?
Но все равно уже и по другим причинам приходится запрос
программно генерить.
← →
July (2004-04-08 12:30) [2]Спасибо за ответ. Не могу сказать, что он меня порадовал :)
Какой-то глюк наблюдался с передачей текстовых параметров,
решить не удалось - уже и кавычки все перепроверили, и длины
строк. Тот же запрос ручками с теми же конкретными значениями
- работает. С параметрами - ошибка. IBExpert вообще access violation вываливает.
Основная проблема - если просто писать условие проверки на
равенство строк разной длины (например ""="аб") -
нормально обрабатывается и получается, естественно, ложь,
а если тоже самое передавать в виде параметров - ошибка.
Это как-то объясняется?
Но все равно уже и по другим причинам приходится запрос
программно генерить.
← →
Anatoly Podgoretsky © (2004-04-08 12:33) [3]На клиенте?
SQL.Text перед выполнением запроса.
← →
Anatoly Podgoretsky © (2004-04-08 12:33) [3]На клиенте?
SQL.Text перед выполнением запроса.
← →
July (2004-04-08 13:02) [4]>На клиенте?
>SQL.Text перед выполнением запроса
Фигушки!
Я ж говорю, там все тот же текст с :param1, :param2 ...
Попробуйте :)
← →
July (2004-04-08 13:02) [4]>На клиенте?
>SQL.Text перед выполнением запроса
Фигушки!
Я ж говорю, там все тот же текст с :param1, :param2 ...
Попробуйте :)
← →
wild_arg © (2004-04-08 15:17) [5]А у IB есть какая-нить приблуда, которая отслеживает все события, что случаются с твоей БД? У MS SQL Server, например, есть - Profiler.
Через подобную приблуду можно узнать какой запрос пытался выполниться.
← →
wild_arg © (2004-04-08 15:17) [5]А у IB есть какая-нить приблуда, которая отслеживает все события, что случаются с твоей БД? У MS SQL Server, например, есть - Profiler.
Через подобную приблуду можно узнать какой запрос пытался выполниться.
← →
July (2004-04-09 12:50) [6]Есть такая штука SQL Monitor, только что попробовала,
но она пишет примерно следующее:
[09.04.2004 12:38:58.010] : [Prepare]
select <...поля...>
from <...таблица...>
where <поле>=:param
or :param = ""
[09.04.2004 12:38:58.020] : [Execute]
select <...поля...>
from <...таблица...>
where <поле>=:param
or :param = ""
PARAM = jjj
PARAM = jjj
[09.04.2004 12:38:58.020] : [Execute Error]
Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
arithmetic exception, numeric overflow, or string truncation.
Можно даже вторую часть условия убрать, передать только
<поле>=:param
- та же картина.
Причем выявлена следующая закономерность - не важно,
тип ли у поля char(x) или varchar(x) - ошибки нет, если длина
значения параметра <= x, все нормально (пусть результат пустой,
если длина параметра отличается от длины значения поля -
но запрос выполняется). В противном же случае вышеуказанное
сообщение (оно же вываливается при выполнении приложения,
а IBExpert почему-то испуганно впридачу еще Accesss Violation
выплевывает).
Пугается Interbase, когда к нему лезут со строками длиннее,
чем у него уже есть :))
← →
July (2004-04-09 12:50) [6]Есть такая штука SQL Monitor, только что попробовала,
но она пишет примерно следующее:
[09.04.2004 12:38:58.010] : [Prepare]
select <...поля...>
from <...таблица...>
where <поле>=:param
or :param = ""
[09.04.2004 12:38:58.020] : [Execute]
select <...поля...>
from <...таблица...>
where <поле>=:param
or :param = ""
PARAM = jjj
PARAM = jjj
[09.04.2004 12:38:58.020] : [Execute Error]
Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
arithmetic exception, numeric overflow, or string truncation.
Можно даже вторую часть условия убрать, передать только
<поле>=:param
- та же картина.
Причем выявлена следующая закономерность - не важно,
тип ли у поля char(x) или varchar(x) - ошибки нет, если длина
значения параметра <= x, все нормально (пусть результат пустой,
если длина параметра отличается от длины значения поля -
но запрос выполняется). В противном же случае вышеуказанное
сообщение (оно же вываливается при выполнении приложения,
а IBExpert почему-то испуганно впридачу еще Accesss Violation
выплевывает).
Пугается Interbase, когда к нему лезут со строками длиннее,
чем у него уже есть :))
← →
Anatoly Podgoretsky © (2004-04-09 12:53) [7]TQuery.Text
← →
Anatoly Podgoretsky © (2004-04-09 12:53) [7]TQuery.Text
← →
stud © (2004-04-09 13:25) [8]тип ли у поля char(x) или varchar(x) - ошибки нет, если длина
значения параметра <= x, все нормально (пусть результат пустой,
если длина параметра отличается от длины значения поля -
но запрос выполняется).
т.е. при попытке записать строку длинее, чем объявлена?
кажется это нормальная реакция)) но даже если такая строка запишется, возможны неприятности в дальнейшем.
← →
stud © (2004-04-09 13:25) [8]тип ли у поля char(x) или varchar(x) - ошибки нет, если длина
значения параметра <= x, все нормально (пусть результат пустой,
если длина параметра отличается от длины значения поля -
но запрос выполняется).
т.е. при попытке записать строку длинее, чем объявлена?
кажется это нормальная реакция)) но даже если такая строка запишется, возможны неприятности в дальнейшем.
← →
July (2004-04-09 13:54) [9]>т.е. при попытке записать строку длинее, чем объявлена?
Не записать, а сравнить со строкой длиннее, чем может
содержать поле.
Записать-то ясное дело нельзя больше, чем есть места
>TQuery.Text
Интересно, что-то там правда без параметров пишет.
Покопаюсь...
Хотя в общем уже понятно, почему не работало раньше,
но потом может пригодится.
← →
July (2004-04-09 13:54) [9]>т.е. при попытке записать строку длинее, чем объявлена?
Не записать, а сравнить со строкой длиннее, чем может
содержать поле.
Записать-то ясное дело нельзя больше, чем есть места
>TQuery.Text
Интересно, что-то там правда без параметров пишет.
Покопаюсь...
Хотя в общем уже понятно, почему не работало раньше,
но потом может пригодится.
← →
sir John © (2004-04-09 13:59) [10]А ShowMessage перерд выполнением запроса? В него выводить динамически сформированную строку, которая будет затем передаваться в качестве запроса.
← →
sir John © (2004-04-09 13:59) [10]А ShowMessage перерд выполнением запроса? В него выводить динамически сформированную строку, которая будет затем передаваться в качестве запроса.
← →
serge35 (2004-04-09 17:59) [11]Я текст запроса после присвоения параметров записывал в текстовый файл. Потом брал запрос из файла и запускал.
← →
serge35 (2004-04-09 17:59) [11]Я текст запроса после присвоения параметров записывал в текстовый файл. Потом брал запрос из файла и запускал.
← →
July (2004-04-12 12:42) [12]TQuery.Text - тоже самое, что и sql.text,
только там на местах параметров ставятся знаки вопроса.
← →
July (2004-04-12 12:42) [12]TQuery.Text - тоже самое, что и sql.text,
только там на местах параметров ставятся знаки вопроса.
← →
Anatoly Podgoretsky © (2004-04-12 12:52) [13]Points to the actual text of the SQL query passed to the Borland Database Engine (BDE).
property Text: PChar;
Description
Text is a read-only property that can be examined to determine the actual contents of SQL statement passed to the BDE. For parameterized queries, Text contains the SQL statement with parameters replaced by the parameter substitution symbol (?) in place of actual parameter values.
← →
Anatoly Podgoretsky © (2004-04-12 12:52) [13]Points to the actual text of the SQL query passed to the Borland Database Engine (BDE).
property Text: PChar;
Description
Text is a read-only property that can be examined to determine the actual contents of SQL statement passed to the BDE. For parameterized queries, Text contains the SQL statement with parameters replaced by the parameter substitution symbol (?) in place of actual parameter values.
← →
July (2004-04-12 13:42) [14]to Anatoly Podgoretsky:
И что? Я тоже читала справку.
For parameterized queries, Text contains the SQL statement with parameters replaced by the parameter substitution symbol (?) in place of actual parameter values.
Да в общем, разобрались уже - SQL statement passed to the BDE - все равно с параметрами остается.
VLAD-MAL писал об этом.
← →
July (2004-04-12 13:42) [14]to Anatoly Podgoretsky:
И что? Я тоже читала справку.
For parameterized queries, Text contains the SQL statement with parameters replaced by the parameter substitution symbol (?) in place of actual parameter values.
Да в общем, разобрались уже - SQL statement passed to the BDE - все равно с параметрами остается.
VLAD-MAL писал об этом.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.035 c