powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запуск запроса в sql базе
25 сообщений из 39, страница 1 из 2
запуск запроса в sql базе
    #38072744
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста.
Ситуация такая.
Несколько запросов с параметрами param_num и param_date в виде блока программы записаны в мемо поле SQL базы.
например: dbo.base1.fiel_mem

Вопрос: Как из фокс про запустить этот блок с передачей туда параметров и забрать оттуда результат в виде таблицы.

есть еще вариант, что весь блок программы написанный для sql хранится в переменной фоксы mem_text. Как этот блок запустить из переменной на sql сервере ?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072773
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
F1 - sqlexec()
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072796
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FfffffffffffffffF1 - sqlexec()
Покажите синтаксис, если там блок программы состоящий из кучи запросов, создания темповых таблиц и т.д.
Простые запросы да, работают, а блок программы - нет.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072831
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viart,

Вытащи из мемо-поля в строку и подставь ее в SQLEXEC.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072849
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не силен в sql, поэтому и спрашиваю
подскажите синтаксис, чтобы запустить и блок из переменной , и параметры, и указать куда выгрузить результат. В хелпах не нашел.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072868
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Команды блока должны быть разделены символом ;. Все остальное - так же, как и с одной командой. Примеры SQLExec с параметрами есть в Хелпе.
Не совсем понятно, как блок без заполненных параметрови может храниться в переменной.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072879
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FfffffffffffffffНе совсем понятно, как блок без заполненных параметрови может храниться в переменной.Ну хранится там строка, где есть к-либо имена переменных (параметров).
Перед стартом sqlexec им присваиваются к-либо значения...
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072895
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пусть автор лучше приведет пример.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072914
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viartя не силен в sql, поэтому и спрашиваю
подскажите синтаксис, чтобы запустить и блок из переменной , и параметры, и указать куда выгрузить результат. В хелпах не нашел.Почему по форуму не поискал? читай, допиливай самостоятельно.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072922
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот маленький кусочек:

create table #tmp ( имена полей )

insert into #tmp
select поля
from таблица where ...date=@@@param_date and ...

declare @mem1
...
begin
select top 1 ...

SET @CMD = 'alter table #tmp ' +
...

EXECUTE(@CMD)

select * from #tmp - здесь вывод результата.

все это хранится в мемо поле одной из записи
как из фокспро это запустить?
Как ни пробую, не получается.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072943
Дед Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*/bdConn Номер соединения с сервером

m.cursor = "TempCursor" && Имя сурсора, если суда будет формироваться ответ сервера
m.sqlval = <Имя таблицы>.<Имя поля Memo> && Строка запроса из мемо-поля

mmm = SQLEXEC(bdConn, m.sqlval, m.cursor)
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072952
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вы предполагаете параметры заменять значениями?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072969
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дед Евгений*/bdConn Номер соединения с сервером

m.cursor = "TempCursor" && Имя сурсора, если суда будет формироваться ответ сервера
m.sqlval = <Имя таблицы>.<Имя поля Memo> && Строка запроса из мемо-поля

mmm = SQLEXEC(bdConn, m.sqlval, m.cursor)

bdConn Номер соединения с сервером - это ясно

m.cursor = "TempCursor" - с этим тоже понятно

m.sqlval = <Имя таблицы>.<Имя поля Memo> && Строка запроса из мемо-поля

здесь чтобы запустить мемо поле , его еще надо найти - Select * from dbo.ttt where dbo.ttt.id=aaa

mmm = SQLEXEC(bdConn, m.sqlval, m.cursor) - а как туда передать параметры?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38072989
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Туда - никак.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073309
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viartкак из фокспро это запустить?
Как ни пробую, не получается.Как пробовали?
Вместо
from таблица where ...date=@@@param_date and ...
напишите
Код: sql
1.
from таблица where ...date=?Переменная_со_значением_параметра and ...


Надеюсь, догадаетесь что надо поставить вместо слова Переменная_со_значением_параметра?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073558
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал по разному.
По моему фокс просто не прожевывает синтаксис SQL,
и вторая причина , нашел в одном из хелпов, длина выражения в SQLEXEC() должна быть не более 255 символов,
а блок в мемо поле там наааааамного больше.

Тут надо типа SQLEXEC( exec ..... или call .... )
кто знает подскажите.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073570
ViartПробовал по разному.Прелестно. И все пробы были правильными? А Вы знаете эти правильные способы? И мы их все должны угадать?По моему фокс просто не прожевывает синтаксис SQL, А что это такое - синтаксис SQL? Где такой термин увидели? С каких пор у SQL появился один синтаксис? А фоксовый диалект языка SQL не пробовали изучить, а не изобретать или пытаться использховать какой-то другой?и вторая причина , нашел в одном из хелпов, длина выражения в SQLEXEC() должна быть не более 255 символов,Чушь. Ни в одном из хелпов такого нет.а блок в мемо поле там наааааамного больше.Ну и что?
Тут надо типа SQLEXEC( exec ..... или call .... )
кто знает подскажите.Уже подсказали. Читать не пробовали?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073580
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий :)
Я попросил помочь, а не умничать, не знаешь, проходи мимо.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073587
Viart,
Не понимаю, зачем хранимые процедуры хранить в мемо - полях?
Не лучше ли хранить их в том виде, в каком им и положено быть - в виде хранимых процедур на сервере. И уже в таком виде их вызывать... передавая в них только параметры... И не тянуть все на клиента, чтобы потом отсылать обратно на сервер...

Либо, если уж Вам так хочется, напишите хранимую процедуру - оболочку ("фабрику" в терминах С++), которая будет выполнять то, что вы хотите сделать: читать данные с мемо-поля, формировать необходимые команды, передавать необходимые параметры и т.д.
Только она будет работать на сервере... А вы ей будете управлять через SqlExec()...
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073616
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все не так просто.
Есть большой программный комплекс, покупной, в нем есть мастер запросов, который сам все сочиняет и постоянно это переписывает, хранится все это в мемо полях, т.е. изменять под себя эти блоки я не могу. Нужно написать прогу, которая запускала бы эти процессы по моему расписанию и сама сохраняла результаты. вручную все это просто очень муторно.
Вот и вся задача.
Кто подскажет? Я не очень силен во всем этом.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073685
Viart,
Тогда выход только один. Пишите хранимую процедуру (функцию) на сервере и всю работу (поиск записи, из которой читается мемо-поле, формирование команд для запуска, передачу параметров и т.д.) выполняйте в ней. На клиента - передавайте уже результат работы...
Делов-то. Только выучить T-SQL... :-)))
Или поищите подобную функцию среди хранимых процедур / функций Вашего программного комплекса... Наверняка есть похожий модуль...
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073708
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, наверное что то подобное и придется делать.
Спасибо за совет. Примерно в этом направлении и шел.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073808
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viartправильный проходящий :)
Я попросил помочь, а не умничать, не знаешь, проходи мимо.Что такое умничать? А что, лучше глупничать и нести чушь как некоторые? Мы таки увидим конкретику или будем обсуждать сферического коня в вакууме?
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073859
Sergey SizovМы таки увидим конкретику или ...
Так была же "конкретика"...
Например, вот:
ViartЕсть большой программный комплекс, покупной, в нем есть мастер запросов, который сам все сочиняет и постоянно это переписывает, хранится все это в мемо полях, т.е. изменять под себя эти блоки я не могу. Нужно написать прогу, которая запускала бы эти процессы по моему расписанию и сама сохраняла результаты. вручную все это просто очень муторно.
Вот и вся задача.
Кто подскажет? Я не очень силен во всем этом.
...
Рейтинг: 0 / 0
запуск запроса в sql базе
    #38073880
ViartПробовал по разному.
нашел в одном из хелпов, длина выражения в SQLEXEC() должна быть не более 255 символов,

Вы этот хелп немного не правильно поняли... Да, на самом деле там сказано:
Help...check to see if it exceeds the maximum length of a string literal in Visual FoxPro, which is 255 characters. Longer strings will cause a "Command contains unrecognized phrase/keyword" error. However, you can pass long SQL statements if you break them up into several concatenated literals...
Т.е. длина выражения должна быть не более 255 символов. Но, если это таки произошло, Вы можете разбить длинную строку на несколько строк меньшего размера и объединить их в SqlExec()...
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запуск запроса в sql базе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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