powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запуск запроса в sql базе
14 сообщений из 39, страница 2 из 2
запуск запроса в sql базе
    #38073923
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за совет, веду поиски в направлении хранимых процедур. Никогда раньше не занимался SQL, Затягивает :).
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38074045
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийSergey SizovМы таки увидим конкретику или ...
Так была же "конкретика"...
Например, вот:
ViartЕсть большой программный комплекс, покупной, в нем есть мастер запросов, который сам все сочиняет и постоянно это переписывает, хранится все это в мемо полях, т.е. изменять под себя эти блоки я не могу. Нужно написать прогу, которая запускала бы эти процессы по моему расписанию и сама сохраняла результаты. вручную все это просто очень муторно.
Вот и вся задача.
Кто подскажет? Я не очень силен во всем этом. Это не конкретика, а вода. Где испробованный код? Или нам предлагается его угадать?
Вам уже написали общий вид коанды получения результата запроса
Код: sql
1.
mmm = SQLEXEC(bdConn, m.sqlval, m.cursor)


Он единственный и потому непонятны Ваши поиски какого-то особенного способа получения нужного Вам результата.
Что тут непонятно? Вы не знаете как в переменную засунуть содержимое мемо поля?
Как подставить значения параметров тоже уже показано. Так что непонятно?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38074097
Sergey SizovЧто тут непонятно? Вы не знаете как в переменную засунуть содержимое мемо поля?
Как подставить значения параметров тоже уже показано. Так что непонятно?
То есть, Вы предлагаете исходное выражение, содержащееся в мемо-поле:
Код: sql
1.
2.
3.
insert into #tmp
select поля
from таблица where ...date=@@@param_date and ...


преобразовать к виду:
Код: sql
1.
2.
3.
insert into #tmp
select поля
from таблица where ...date = ?param_date and ...


Т.е. фактически написать свой небольшой парсер Sql-выражений?
Sergey SizovКак подставить значения параметров тоже уже показано.
И как это сделать? как подставить параметры в исходный запрос (формата T-Sql), а не в преобразованный (формата FoxPro-Sql)?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38074128
Sergey SizovЭто не конкретика, а вода.
Нет, это вполне нормальная постановка практической задачи "сопровожденца".
Другими словами ситуация следующая:
Имеется база на MS SQL SERVER. Некий программный комплекс формирует для выполнения определенных действий набор SQL-команд Для определенности, будем считать, что этот генератор SQL-выражений = макрорекордер, то есть записывает SQL-команды по действиям пользователя и они сохраняются в мемо-поля таблицы на MS SQL SERVER.
Править запросы непосредственно в самом мемо-поле нельзя, так как иначе "полетит" вся "логика" программного комплекса. Править руками на клиенте - непродуктивно. Особенно, если нужно организовать запуск некоей процедуры в ночное время - в общем случае никто не знает, что запишет в мемо-поле умный генератор запросов и в какое время, как зависят эти запросы от действий пользователя... А выполнить процедуру надо. Вот и извращается ТС для решения данной задачи...
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38074149
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все совершенно верно. Так и есть. Вот пытаюсь достучаться. небольшой опыт на фоксе есть. на sql полный нуль. Сижу осваиваю.
Думаю сделать удаленную процедуру и с ее помощью уже рулить. Напрямую из фокса решение такой задачи не нашел.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38074972
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийSergey SizovЧто тут непонятно? Вы не знаете как в переменную засунуть содержимое мемо поля?
Как подставить значения параметров тоже уже показано. Так что непонятно?
То есть, Вы предлагаете исходное выражение, содержащееся в мемо-поле:
Код: sql
1.
2.
3.
insert into #tmp
select поля
from таблица where ...date=@@@param_date and ...


преобразовать к виду:
Код: sql
1.
2.
3.
insert into #tmp
select поля
from таблица where ...date = ?param_date and ...


Т.е. фактически написать свой небольшой парсер Sql-выражений? Нет, всего лишь подстановка строки вместо метасимволв @@@. Например, StrTran(memo,'@@@', '?'). Так понятно? Sergey SizovКак подставить значения параметров тоже уже показано.
И как это сделать? как подставить параметры в исходный запрос (формата T-Sql), а не в преобразованный (формата FoxPro-Sql)?Знак вопроса и есть подстановка значения параметра в запрос. Никаких преобразований в формат фокса не было и никто про него кроме Вас пока не писал. Что за фантазии?
Может, наконец-то, займемся практикой, а не пустыми теоритизированиями?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38075091
Sergey SizovСтанислав С...кийпропущено...

То есть, Вы предлагаете исходное выражение, содержащееся в мемо-поле:
Код: sql
1.
2.
3.
insert into #tmp
select поля
from таблица where ...date=@@@param_date and ...


преобразовать к виду:
Код: sql
1.
2.
3.
insert into #tmp
select поля
from таблица where ...date = ?param_date and ...


Т.е. фактически написать свой небольшой парсер Sql-выражений? Нет, всего лишь подстановка строки вместо метасимволв @@@. Например, StrTran(memo,'@@@', '?'). Так понятно? пропущено...

И как это сделать? как подставить параметры в исходный запрос (формата T-Sql), а не в преобразованный (формата FoxPro-Sql)?Знак вопроса и есть подстановка значения параметра в запрос. Никаких преобразований в формат фокса не было и никто про него кроме Вас пока не писал. Что за фантазии?
Может, наконец-то, займемся практикой, а не пустыми теоритизированиями?
А Вас не смущает, что параметры/переменные в T-SQL вообще-то задаются через один символ '@'... Некоторые системные функции/переменные - предваряются двумя символами '@'. А здесь их - целых три! Дополнительное использование еще двух '@' (если только это не описка ТС) несет какой-то иной смысл нежели просто передача параметра! Так что, без парсера - ну никак....
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38075357
P-032
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведи законченный кусок кода который лежит в мемо. И вообще.. что он в мемо делает на стороне клиента ? Почему не BLOB например ?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38075391
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийSergey Sizovпропущено...
Нет, всего лишь подстановка строки вместо метасимволв @@@. Например, StrTran(memo,'@@@', '?'). Так понятно? пропущено...
Знак вопроса и есть подстановка значения параметра в запрос. Никаких преобразований в формат фокса не было и никто про него кроме Вас пока не писал. Что за фантазии?
Может, наконец-то, займемся практикой, а не пустыми теоритизированиями?
А Вас не смущает, что параметры/переменные в T-SQL вообще-то задаются через один символ '@'... А Вас не смущает тот факт, что символ @ к передаче параметров не имеет никакого отношения? Вас не смущает тот факт, что этот символ есть обязательный в T-SQL преффикс переменной и не более того? Некоторые системные функции/переменные - предваряются двумя символами '@'.Ну и что? И переменные даже не некоторые, а все. И что это меняет? А здесь их - целых три! Вот именно! Именно! Ибо такой последовательности в T-SQL нет и это нам гарантирует однозначность.Дополнительное использование еще двух '@' (если только это не описка ТС) несет какой-то иной смысл нежели просто передача параметра!Еще раз для плохо знающих T-SQL: к передаче параметров этот символ не имеет никакого отношения. Так что, без парсера - ну никак....Так что если отбросить фантазии и прочие измышлизмы, то никаким парсером и не пахнет.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38077169
Sergey SizovА Вас не смущает тот факт, что символ @ к передаче параметров не имеет никакого отношения? Вас не смущает тот факт, что этот символ есть обязательный в T-SQL преффикс переменной и не более того?
Нет. У каждого языка свои "тараканы" в голове

Sergey Sizov А здесь их - целых три! Вот именно! Именно! Ибо такой последовательности в T-SQL нет и это нам гарантирует однозначность.
...в данной(!!!) конкретной(!!!) сгенерированной "процедуре" ! Или Вы знаете о какой системе идет речь и уверены, что она всегда Sergey Sizovнам гарантирует однозначность. именно таким способом?

А если в другой сгенерированной "процедуре" такой "однозначности" не будет?
Если там будут "обычные" переменные и параметры (те, которые с одним '@')... Для определенности, пусть у "процедуры" будет один входной параметр, и пара локальных переменных. Что тогда будете делать? Ведь "универсальный" StrTran(memo,'@', '?') без знания контекста использования '@' уже не "покатит".


Sergey SizovЕще раз для плохо знающих T-SQL .... если отбросить фантазии и прочие измышлизмы, то никаким парсером и не пахнет.
Как говорилось в одном анекдоте про водителя-дальтоника: Я хоть и дальтоник, но ведь не идиот... Если Вы мне скажете, как Вы будете StrTran'ом обрабатывать ситуацию, приведенную абзацем выше в этом посте, то я признаю свое поражение и тихо уйду.... Можно даже "по-английски"... не буду продолжать флейм по данной теме...
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38077230
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийSergey SizovА Вас не смущает тот факт, что символ @ к передаче параметров не имеет никакого отношения? Вас не смущает тот факт, что этот символ есть обязательный в T-SQL преффикс переменной и не более того?
Нет. У каждого языка свои "тараканы" в головеТак речь не о языке, а о Ваших предположениях в связи с языком.
Sergey Sizovпропущено...
Вот именно! Именно! Ибо такой последовательности в T-SQL нет и это нам гарантирует однозначность.
...в данной(!!!) конкретной(!!!) сгенерированной "процедуре" ! Или Вы знаете о какой системе идет речь и уверены, что она всегда Sergey Sizovнам гарантирует однозначность. именно таким способом?Весь топик речь шла о MS SQL. В нем только один даилект SQL'я - T-SQL. В котором последовательность @@@ не зарезервирована.

А если в другой сгенерированной "процедуре" такой "однозначности" не будет?
Если там будут "обычные" переменные и параметры (те, которые с одним '@')... Для определенности, пусть у "процедуры" будет один входной параметр, и пара локальных переменных. Что тогда будете делать? Ведь "универсальный" StrTran(memo,'@', '?') без знания контекста использования '@' уже не "покатит".Еще раз для плохо думающих: знак @ не есть признак параметра. Одиночный знак есть преффикс переменной, а двойной - преффикс некоторых встроенных функций, еще со времен Sybase. И речь идет о конкретной системе. И ни о какой универсальности нигде никакой речи не было. И речь была именно о затроенни символа, я нигде не предлагал приписываемый мне Вами вариант замены одиночного символа. Даже если бы я его и прелагал бы, то уж всяко не так. :) Для замены одиночного символа есть другая более быстрая функция. :)

Sergey SizovЕще раз для плохо знающих T-SQL .... если отбросить фантазии и прочие измышлизмы, то никаким парсером и не пахнет.
Как говорилось в одном анекдоте про водителя-дальтоника: Я хоть и дальтоник, но ведь не идиот... Если Вы мне скажете, как Вы будете StrTran'ом обрабатывать ситуацию, приведенную абзацем выше в этом посте, то я признаю свое поражение и тихо уйду.... Можно даже "по-английски"... не буду продолжать флейм по данной теме...Я ничего не буду делать. Ибо мне это не надо. Еще раз: речь идет про конкретную систему и способ предложен для конкретной системы и конкретной ситуации.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38077311
Sergey SizovЯ ничего не буду делать. Ибо мне это не надо. Еще раз: речь идет про конкретную систему и способ предложен для конкретной системы и конкретной ситуации.
Вы еще подеритесь, горячие эстонские парни...(с)

Я не понял, что речь шла о конкретной ситуации... Думал, что Вы предлагаете универсальное решение - вот и пытался доказать Вам, что оно не является таковым...
В любом случае примите мои искренние извинения...
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38077428
makar12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Viart,
НЕ помню синтаксиса T/SQL но в MySQL делаю так:

Если m.sqlval = Строка из мемо-поля то
формируем тело ХП:

m.sqlval="CREATE DEFINER=`admin`@`localhost` PROCEDURE `NewProcedure`(`Dt` Date) BEGIN "+;
m.sqlval+;
" END;"

далее:
mmm = SQLEXEC(bdConn, "DROP PROCEDURE IF EXISTS `NewProcedure`;")
mmm = SQLEXEC(bdConn, m.sqlval)
mmm = SQLEXEC(bdConn, "CALL `NewProcedure`(<тут параметр>);",m.cursor) && курсоров может образоваться несколько ...


как то так ...
У меня работает.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38081682
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем кто попытался помочь.
Проблема решена путем внедрения в базу SQL хранимой процедуры и вызова ее из фоксы.
тему можно закрывать.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запуск запроса в sql базе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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