powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить текст запроса TSQLQuery с учетом подставленных параметров
25 сообщений из 26, страница 1 из 2
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671197
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую компонент TSQLQuery. Необходимо выводить в лог текст запроса. Если выводить просто свойство SQL.Text, то в нем будут встречаться имена параметров (:ParamName, :ParamName2 и т.д.), но не их значения. Как получить текст запроса с уже подставленными параметрами?
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671252
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper, параметры на то и параметры, что они отправляются не в виде текста.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671304
Kotъ-Begemotъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperИспользую компонент TSQLQuery. Необходимо выводить в лог текст запроса. Если выводить просто свойство SQL.Text, то в нем будут встречаться имена параметров (:ParamName, :ParamName2 и т.д.), но не их значения. Как получить текст запроса с уже подставленными параметрами?

До вызова Query.Execute (или Open) написать вывод своего запроса в виде сообщения, с подстановкой нужных параметров:

Код: pascal
1.
ShowMessage(Format('SELECT .... FROM SOMETABLE ST WHERE ST.SFIELD1=%s AND ST.SFIELD2=%d ... ', [Par1Value, Par2Value]));
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671305
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperИспользую компонент TSQLQuery. Необходимо выводить в лог текст запроса. Если выводить просто свойство SQL.Text, то в нем будут встречаться имена параметров (:ParamName, :ParamName2 и т.д.), но не их значения. Как получить текст запроса с уже подставленными параметрами?

а что показать, если параметр типа БЛОБ ? может лучше подумать прежде чем спросить?
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671319
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,
Я знаю, что спрашиваю. У меня нет параметров BLOB. Да и если бы были, их тоже можно представить в текстовом виде, если что.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671320
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperЯ знаю, что спрашиваю.
Протестую.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671321
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperMaratIsk,
Я знаю, что спрашиваю. У меня нет параметров BLOB. Да и если бы были, их тоже можно представить в текстовом виде, если что.

да???????????????????????????????
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671325
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

судя по всему ты смутно представляешь как обрабатываются параметры запроса
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671341
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperИспользую компонент TSQLQuery. Необходимо выводить в лог текст запроса. Если выводить просто свойство SQL.Text, то в нем будут встречаться имена параметров (:ParamName, :ParamName2 и т.д.), но не их значения. Как получить текст запроса с уже подставленными параметрами?Изменить вызов. Например сделав его 'exec sp_executesql' для mssql
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671507
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskа что показать, если параметр типа БЛОБ ? может лучше подумать прежде чем спросить?Например, показать первые 16 байт в Hex виде
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671528
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanInterloperЯ знаю, что спрашиваю.
Протестую.
Какой умный совет. Вы прямо очень помогли, спасибо.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671543
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloperwadmanпропущено...

Протестую.
Какой умный совет. Вы прямо очень помогли, спасибо.
Еще раз:
wadmanпараметры на то и параметры, что они отправляются не в виде текста.
Их значения даже на стороне сервера в дампе запроса не увидеть (с наскоку).
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671564
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,
Я отлично понимаю, как обрабатываются запросы с параметрами, как формируется и хранится структура XSQLDA.
А ты что, решил выпендриться, показать какой ты дохрена умный, чтобы свысока указывать мне, что я чего-то не знаю, а ты знаешь? В этом смысл твоего поста.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671853
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperMaratIsk,
Я отлично понимаю, как обрабатываются запросы с параметрами, как формируется и хранится структура XSQLDA.
А ты что, решил выпендриться, показать какой ты дохрена умный, чтобы свысока указывать мне, что я чего-то не знаю, а ты знаешь? В этом смысл твоего поста.

я помогаю тебе понять абсурдность InterloperКак получить текст запроса с уже подставленными параметрами
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38671877
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

ты серьезно думаешь, что клиентская библиотека субд склеивает текст запроса из значений параметров?
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38672062
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,
Нет, не думаю.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38672064
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,

Абсурдности здесь нет. Я подразумевал, что может быть существует некая отладочная функция, которая позволяет получить текст запроса со значениями вместо плейсхолдеров. Если не существует - так и ответьте. Демагогию разводить не следует.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38672359
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,
параметры не подсталяются, они передаются отдельно от запроса
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38672370
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperЯ подразумевал, что может быть существует некая отладочная функция,
которая позволяет получить текст запроса со значениями вместо плейсхолдеров. Если не
существует - так и ответьте.
Отвечаю: не существует. Обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38672502
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInterloperЯ подразумевал, что может быть существует некая отладочная функция,
которая позволяет получить текст запроса со значениями вместо плейсхолдеров. Если не
существует - так и ответьте.
Отвечаю: не существует. Обломись.

Но можно наваять самому.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38672529
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45Но можно наваять самому.
+1.
У себя давно написали велосипед он может не всегда сработать и чуток испортить SQL :)
но в 99% случаях упрощает отладку - т.к. достаточно скопировать запрос в PL/SQL Developer и он выполнится
алгоритм очень тупой - ищем :ParamName и заменяем на /*:ParamName*/ 123
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38672539
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPAно в 99% случаях упрощает отладку - т.к. достаточно скопировать запрос в PL/SQL Developer и он выполнится
Вообще-то у оракла есть и свои средства, которые ничего не портят.
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #38675194
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

разве проблема?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
with AQuery do 
begin

  LogSQL := SQL.Text;

  for i := 0 to High(Param) do
    LogSQL := YourLikeReplaceStringFunction(LogSQL, VarToStr(Param[i]){что заменить}, VarToStr(Values[i]){чем заменить});

end;
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #39847268
Alexander Rogan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот она та самая, что возможно поможет.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
function SQLParamsToSQL(Q:TQuery):string;
var LogSQL, nam,val:string;
   i:integer;
   function ch_point(v:string):string;
   begin
     if pos(',',v)>0 then v[pos(',',v)]:='.';
     result:=v;
   end;

   function ch_date(v:string):string;
   begin
     if v='0:00:00' then result:='null'
     else result:=''''+v+'''';
   end;

begin

     with Q do
     begin
     LogSQL:=SQL.Text;
          for i := 0 to ParamCount-1 do
          begin
          nam:=':'+VarToStr(Params[i].name);
          val:=VarToStr(Params[i].Value);

          if val='' then val:='null' else
          case Params[I].DataType of
            ftString: val:=''''+val+'''';
            ftInteger: val:=val;
            ftFloat:  val:=ch_point(val);
            ftCurrency: val:=ch_point(val);
            ftDate: val:=ch_date(val);
            ftTime: val:=ch_date(val);
            ftDateTime:val:=ch_date(val);
            else
            val:=val;
          end;

          LogSQL := stringreplace(LogSQL, nam, val,[rfIgnoreCase]);
          end;
     end;
     result:=LogSQL;
end;
...
Рейтинг: 0 / 0
Как получить текст запроса TSQLQuery с учетом подставленных параметров
    #39847270
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Она та самая" такое осилит ?
Код: pascal
1.
select ':param1' as AAA from Table where Id = :param1
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить текст запроса TSQLQuery с учетом подставленных параметров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]