:: Visual Foxpro, Foxpro for DOS
Re: передать параметр
DmitryKn

Сообщений: 300
Дата регистрации: 06.04.2022
Доброго всем дня!

Собирался отправить файлы, вернул код с PRIVATE-переменной, неправильное срабатывание ушло.
Я понимаю, как я выгляжу после всего этого, но честное слово, я это все не придумал...

Спасибо вам за уделенное внимание, если будете бросать в меня помидоры, выбирайте помягче, пожалуйста
Ratings: 0 negative/0 positive
Re: передать параметр
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
PaulWist
Vedmak
Я тоже в начале использовал эту конструкцию со "ссылкой" на переменную "?m.<fieldname>" работало. Но в какой то момент тоже перестало. Я недельку провел в изысканиях... но терпение кончилось и просто переделал на явное указание значения поля.

Это действие (убрать параметризированный запрос) приводит к тому, что ЛЮБОЙ запрос отдельно компилируется, забивая кэш процедур, вытесняя планы откомпилированных/параметризированных запросов.
Пока запросов немного (до 1 транзакции/сек) можно наплевать и забыть, при высоконагруженной системе сразу возникнут тормоза выполнения запросов и разгрести их будет ой как непросто.

Так, для справки. Вполне можно скрестить "ежа и ужа". Т.е. передать константу, но использовать как параметр. В синтаксисе MS SQL это будет примерно такая конструкция

declare @par nvarchar(10) = '123';
exec MyProc @par;

Т.е. вот этот самое "123" записываем как константу, но поскольку она присваивается переменной, то получаем параметризированный запрос, который будет использовать ранее сформированный план выполнения

Но, насколько я понимаю, автор темы работает с FireBird. А как там реализовать подобную фичу - не в курсе
Ratings: 0 negative/0 positive
Re: передать параметр
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Владимир Максимов

Так, для справки. Вполне можно скрестить "ежа и ужа". Т.е. передать константу, но использовать как параметр. В синтаксисе MS SQL это будет примерно такая конструкция

declare @par nvarchar(10) = '123';
exec MyProc @par;

Т.е. вот этот самое "123" записываем как константу, но поскольку она присваивается переменной, то получаем параметризированный запрос, который будет использовать ранее сформированный план выполнения


Так , как это будет из фокса выглядеть??

Особенно:

declare @par nvarchar(10) = '123';


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: передать параметр
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
PaulWist

Так , как это будет из фокса выглядеть??

Особенно:

declare @par nvarchar(10) = '123';

А какие проблемы-то?

lcSQL = [declare @par nvarchar(10) = ''] + [123] + [''; exec MyProc @par;]
sqlExec(m.lnCH, lcSQL)
Ratings: 0 negative/0 positive
Re: передать параметр
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Владимир Максимов

А какие проблемы-то?

lcSQL = [declare @par nvarchar(10) = ''] + [123] + [''; exec MyProc @par;]
sqlExec(m.lnCH, lcSQL)

Дык, для "скрипта" с 123 будет скомпилирован отдельный план.

Следующий "скрипт" с

lcSQL = [declare @par nvarchar(10) = ''] + [456] + [''; exec MyProc @par;]
sqlExec(m.lnCH, lcSQL)

для него будет скомпилирован другой план.

То есть, получатся те же яйца, только в профиль.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: передать параметр
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
"будет скомпилирован отдельный план" - план чего?

Насколько я понимаю, будет новый план для присвоения значения переменной. Но на выполнение запроса с этой переменной будет использован ранее созданный.
Ratings: 0 negative/0 positive
Re: передать параметр
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Владимир Максимов
"будет скомпилирован отдельный план" - план чего?
Насколько я понимаю, будет новый план для присвоения значения переменной. Но на выполнение запроса с этой переменной будет использован ранее созданный.

Да, правда зависит от версии и опций ХП.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 akvvohinc  (Гостей: 15)

© 2000-2024 Fox Club 
Яндекс.Метрика