Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1082687621
saysu
2004-04-23 06:33
2004.05.09
Казахские шрифты в самом инструменте как добавить


1-1082644792
моё_имя
2004-04-22 18:39
2004.05.09
закрытие MDI-формы


14-1082405495
Подорожник
2004-04-20 00:11
2004.05.09
Какие работы надо провести с машиной после зимы?


14-1080143655
Piter
2004-03-24 18:54
2004.05.09
FAQ: Добавление иконки в SysTray


1-1082841875
hiperLogun
2004-04-25 01:24
2004.05.09
Установка компонентов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский