|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Спасибо за совет, веду поиски в направлении хранимых процедур. Никогда раньше не занимался SQL, Затягивает :). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2012, 12:34 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Станислав С...кийSergey SizovМы таки увидим конкретику или ... Так была же "конкретика"... Например, вот: ViartЕсть большой программный комплекс, покупной, в нем есть мастер запросов, который сам все сочиняет и постоянно это переписывает, хранится все это в мемо полях, т.е. изменять под себя эти блоки я не могу. Нужно написать прогу, которая запускала бы эти процессы по моему расписанию и сама сохраняла результаты. вручную все это просто очень муторно. Вот и вся задача. Кто подскажет? Я не очень силен во всем этом. Это не конкретика, а вода. Где испробованный код? Или нам предлагается его угадать? Вам уже написали общий вид коанды получения результата запроса Код: sql 1.
Он единственный и потому непонятны Ваши поиски какого-то особенного способа получения нужного Вам результата. Что тут непонятно? Вы не знаете как в переменную засунуть содержимое мемо поля? Как подставить значения параметров тоже уже показано. Так что непонятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2012, 13:25 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Sergey SizovЧто тут непонятно? Вы не знаете как в переменную засунуть содержимое мемо поля? Как подставить значения параметров тоже уже показано. Так что непонятно? То есть, Вы предлагаете исходное выражение, содержащееся в мемо-поле: Код: sql 1. 2. 3.
преобразовать к виду: Код: sql 1. 2. 3.
Т.е. фактически написать свой небольшой парсер Sql-выражений? Sergey SizovКак подставить значения параметров тоже уже показано. И как это сделать? как подставить параметры в исходный запрос (формата T-Sql), а не в преобразованный (формата FoxPro-Sql)? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2012, 13:45 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Sergey SizovЭто не конкретика, а вода. Нет, это вполне нормальная постановка практической задачи "сопровожденца". Другими словами ситуация следующая: Имеется база на MS SQL SERVER. Некий программный комплекс формирует для выполнения определенных действий набор SQL-команд Для определенности, будем считать, что этот генератор SQL-выражений = макрорекордер, то есть записывает SQL-команды по действиям пользователя и они сохраняются в мемо-поля таблицы на MS SQL SERVER. Править запросы непосредственно в самом мемо-поле нельзя, так как иначе "полетит" вся "логика" программного комплекса. Править руками на клиенте - непродуктивно. Особенно, если нужно организовать запуск некоей процедуры в ночное время - в общем случае никто не знает, что запишет в мемо-поле умный генератор запросов и в какое время, как зависят эти запросы от действий пользователя... А выполнить процедуру надо. Вот и извращается ТС для решения данной задачи... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2012, 13:59 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Все совершенно верно. Так и есть. Вот пытаюсь достучаться. небольшой опыт на фоксе есть. на sql полный нуль. Сижу осваиваю. Думаю сделать удаленную процедуру и с ее помощью уже рулить. Напрямую из фокса решение такой задачи не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2012, 14:11 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Станислав С...кийSergey SizovЧто тут непонятно? Вы не знаете как в переменную засунуть содержимое мемо поля? Как подставить значения параметров тоже уже показано. Так что непонятно? То есть, Вы предлагаете исходное выражение, содержащееся в мемо-поле: Код: sql 1. 2. 3.
преобразовать к виду: Код: sql 1. 2. 3.
Т.е. фактически написать свой небольшой парсер Sql-выражений? Нет, всего лишь подстановка строки вместо метасимволв @@@. Например, StrTran(memo,'@@@', '?'). Так понятно? Sergey SizovКак подставить значения параметров тоже уже показано. И как это сделать? как подставить параметры в исходный запрос (формата T-Sql), а не в преобразованный (формата FoxPro-Sql)?Знак вопроса и есть подстановка значения параметра в запрос. Никаких преобразований в формат фокса не было и никто про него кроме Вас пока не писал. Что за фантазии? Может, наконец-то, займемся практикой, а не пустыми теоритизированиями? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2012, 23:30 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Sergey SizovСтанислав С...кийпропущено... То есть, Вы предлагаете исходное выражение, содержащееся в мемо-поле: Код: sql 1. 2. 3.
преобразовать к виду: Код: sql 1. 2. 3.
Т.е. фактически написать свой небольшой парсер Sql-выражений? Нет, всего лишь подстановка строки вместо метасимволв @@@. Например, StrTran(memo,'@@@', '?'). Так понятно? пропущено... И как это сделать? как подставить параметры в исходный запрос (формата T-Sql), а не в преобразованный (формата FoxPro-Sql)?Знак вопроса и есть подстановка значения параметра в запрос. Никаких преобразований в формат фокса не было и никто про него кроме Вас пока не писал. Что за фантазии? Может, наконец-то, займемся практикой, а не пустыми теоритизированиями? А Вас не смущает, что параметры/переменные в T-SQL вообще-то задаются через один символ '@'... Некоторые системные функции/переменные - предваряются двумя символами '@'. А здесь их - целых три! Дополнительное использование еще двух '@' (если только это не описка ТС) несет какой-то иной смысл нежели просто передача параметра! Так что, без парсера - ну никак.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 06:19 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Приведи законченный кусок кода который лежит в мемо. И вообще.. что он в мемо делает на стороне клиента ? Почему не BLOB например ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 11:18 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Станислав С...кийSergey Sizovпропущено... Нет, всего лишь подстановка строки вместо метасимволв @@@. Например, StrTran(memo,'@@@', '?'). Так понятно? пропущено... Знак вопроса и есть подстановка значения параметра в запрос. Никаких преобразований в формат фокса не было и никто про него кроме Вас пока не писал. Что за фантазии? Может, наконец-то, займемся практикой, а не пустыми теоритизированиями? А Вас не смущает, что параметры/переменные в T-SQL вообще-то задаются через один символ '@'... А Вас не смущает тот факт, что символ @ к передаче параметров не имеет никакого отношения? Вас не смущает тот факт, что этот символ есть обязательный в T-SQL преффикс переменной и не более того? Некоторые системные функции/переменные - предваряются двумя символами '@'.Ну и что? И переменные даже не некоторые, а все. И что это меняет? А здесь их - целых три! Вот именно! Именно! Ибо такой последовательности в T-SQL нет и это нам гарантирует однозначность.Дополнительное использование еще двух '@' (если только это не описка ТС) несет какой-то иной смысл нежели просто передача параметра!Еще раз для плохо знающих T-SQL: к передаче параметров этот символ не имеет никакого отношения. Так что, без парсера - ну никак....Так что если отбросить фантазии и прочие измышлизмы, то никаким парсером и не пахнет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 11:28 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Sergey SizovА Вас не смущает тот факт, что символ @ к передаче параметров не имеет никакого отношения? Вас не смущает тот факт, что этот символ есть обязательный в T-SQL преффикс переменной и не более того? Нет. У каждого языка свои "тараканы" в голове Sergey Sizov А здесь их - целых три! Вот именно! Именно! Ибо такой последовательности в T-SQL нет и это нам гарантирует однозначность. ...в данной(!!!) конкретной(!!!) сгенерированной "процедуре" ! Или Вы знаете о какой системе идет речь и уверены, что она всегда Sergey Sizovнам гарантирует однозначность. именно таким способом? А если в другой сгенерированной "процедуре" такой "однозначности" не будет? Если там будут "обычные" переменные и параметры (те, которые с одним '@')... Для определенности, пусть у "процедуры" будет один входной параметр, и пара локальных переменных. Что тогда будете делать? Ведь "универсальный" StrTran(memo,'@', '?') без знания контекста использования '@' уже не "покатит". Sergey SizovЕще раз для плохо знающих T-SQL .... если отбросить фантазии и прочие измышлизмы, то никаким парсером и не пахнет. Как говорилось в одном анекдоте про водителя-дальтоника: Я хоть и дальтоник, но ведь не идиот... Если Вы мне скажете, как Вы будете StrTran'ом обрабатывать ситуацию, приведенную абзацем выше в этом посте, то я признаю свое поражение и тихо уйду.... Можно даже "по-английски"... не буду продолжать флейм по данной теме... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 11:04 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Станислав С...кийSergey SizovА Вас не смущает тот факт, что символ @ к передаче параметров не имеет никакого отношения? Вас не смущает тот факт, что этот символ есть обязательный в T-SQL преффикс переменной и не более того? Нет. У каждого языка свои "тараканы" в головеТак речь не о языке, а о Ваших предположениях в связи с языком. Sergey Sizovпропущено... Вот именно! Именно! Ибо такой последовательности в T-SQL нет и это нам гарантирует однозначность. ...в данной(!!!) конкретной(!!!) сгенерированной "процедуре" ! Или Вы знаете о какой системе идет речь и уверены, что она всегда Sergey Sizovнам гарантирует однозначность. именно таким способом?Весь топик речь шла о MS SQL. В нем только один даилект SQL'я - T-SQL. В котором последовательность @@@ не зарезервирована. А если в другой сгенерированной "процедуре" такой "однозначности" не будет? Если там будут "обычные" переменные и параметры (те, которые с одним '@')... Для определенности, пусть у "процедуры" будет один входной параметр, и пара локальных переменных. Что тогда будете делать? Ведь "универсальный" StrTran(memo,'@', '?') без знания контекста использования '@' уже не "покатит".Еще раз для плохо думающих: знак @ не есть признак параметра. Одиночный знак есть преффикс переменной, а двойной - преффикс некоторых встроенных функций, еще со времен Sybase. И речь идет о конкретной системе. И ни о какой универсальности нигде никакой речи не было. И речь была именно о затроенни символа, я нигде не предлагал приписываемый мне Вами вариант замены одиночного символа. Даже если бы я его и прелагал бы, то уж всяко не так. :) Для замены одиночного символа есть другая более быстрая функция. :) Sergey SizovЕще раз для плохо знающих T-SQL .... если отбросить фантазии и прочие измышлизмы, то никаким парсером и не пахнет. Как говорилось в одном анекдоте про водителя-дальтоника: Я хоть и дальтоник, но ведь не идиот... Если Вы мне скажете, как Вы будете StrTran'ом обрабатывать ситуацию, приведенную абзацем выше в этом посте, то я признаю свое поражение и тихо уйду.... Можно даже "по-английски"... не буду продолжать флейм по данной теме...Я ничего не буду делать. Ибо мне это не надо. Еще раз: речь идет про конкретную систему и способ предложен для конкретной системы и конкретной ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 11:31 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
Sergey SizovЯ ничего не буду делать. Ибо мне это не надо. Еще раз: речь идет про конкретную систему и способ предложен для конкретной системы и конкретной ситуации. Вы еще подеритесь, горячие эстонские парни...(с) Я не понял, что речь шла о конкретной ситуации... Думал, что Вы предлагаете универсальное решение - вот и пытался доказать Вам, что оно не является таковым... В любом случае примите мои искренние извинения... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 11:59 |
|
запуск запроса в sql базе
|
|||
---|---|---|---|
#18+
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) && курсоров может образоваться несколько ... как то так ... У меня работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 12:38 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1583267]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 291ms |
total: | 463ms |
0 / 0 |