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

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

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

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

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
10.12.2012, 17:34
    #38072943
Дед Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск запроса в sql базе
*/bdConn Номер соединения с сервером

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

mmm = SQLEXEC(bdConn, m.sqlval, m.cursor)
...
Рейтинг: 0 / 0
10.12.2012, 17:38
    #38072952
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск запроса в sql базе
Как вы предполагаете параметры заменять значениями?
...
Рейтинг: 0 / 0
10.12.2012, 17:43
    #38072969
Viart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск запроса в sql базе
Дед Евгений*/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
10.12.2012, 17:51
    #38072989
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск запроса в sql базе
Туда - никак.
...
Рейтинг: 0 / 0
10.12.2012, 22:20
    #38073309
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск запроса в sql базе
Viartкак из фокспро это запустить?
Как ни пробую, не получается.Как пробовали?
Вместо
from таблица where ...date=@@@param_date and ...
напишите
Код: sql
1.
from таблица where ...date=?Переменная_со_значением_параметра and ...


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

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

Либо, если уж Вам так хочется, напишите хранимую процедуру - оболочку ("фабрику" в терминах С++), которая будет выполнять то, что вы хотите сделать: читать данные с мемо-поля, формировать необходимые команды, передавать необходимые параметры и т.д.
Только она будет работать на сервере... А вы ей будете управлять через SqlExec()...
...
Рейтинг: 0 / 0
11.12.2012, 10:01
    #38073616
Viart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск запроса в sql базе
Все не так просто.
Есть большой программный комплекс, покупной, в нем есть мастер запросов, который сам все сочиняет и постоянно это переписывает, хранится все это в мемо полях, т.е. изменять под себя эти блоки я не могу. Нужно написать прогу, которая запускала бы эти процессы по моему расписанию и сама сохраняла результаты. вручную все это просто очень муторно.
Вот и вся задача.
Кто подскажет? Я не очень силен во всем этом.
...
Рейтинг: 0 / 0
11.12.2012, 10:37
    #38073685
запуск запроса в sql базе
Viart,
Тогда выход только один. Пишите хранимую процедуру (функцию) на сервере и всю работу (поиск записи, из которой читается мемо-поле, формирование команд для запуска, передачу параметров и т.д.) выполняйте в ней. На клиента - передавайте уже результат работы...
Делов-то. Только выучить T-SQL... :-)))
Или поищите подобную функцию среди хранимых процедур / функций Вашего программного комплекса... Наверняка есть похожий модуль...
...
Рейтинг: 0 / 0
11.12.2012, 10:50
    #38073708
Viart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск запроса в sql базе
Да, наверное что то подобное и придется делать.
Спасибо за совет. Примерно в этом направлении и шел.
...
Рейтинг: 0 / 0
11.12.2012, 11:46
    #38073808
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск запроса в sql базе
Viartправильный проходящий :)
Я попросил помочь, а не умничать, не знаешь, проходи мимо.Что такое умничать? А что, лучше глупничать и нести чушь как некоторые? Мы таки увидим конкретику или будем обсуждать сферического коня в вакууме?
...
Рейтинг: 0 / 0
11.12.2012, 12:04
    #38073859
запуск запроса в sql базе
Sergey SizovМы таки увидим конкретику или ...
Так была же "конкретика"...
Например, вот:
ViartЕсть большой программный комплекс, покупной, в нем есть мастер запросов, который сам все сочиняет и постоянно это переписывает, хранится все это в мемо полях, т.е. изменять под себя эти блоки я не могу. Нужно написать прогу, которая запускала бы эти процессы по моему расписанию и сама сохраняла результаты. вручную все это просто очень муторно.
Вот и вся задача.
Кто подскажет? Я не очень силен во всем этом.
...
Рейтинг: 0 / 0
11.12.2012, 12:14
    #38073880
запуск запроса в sql базе
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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запуск запроса в sql базе / 25 сообщений из 39, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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