powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как выполнить sqlexec с несколькими командами и получить ответ ?
8 сообщений из 8, страница 1 из 1
Как выполнить sqlexec с несколькими командами и получить ответ ?
    #33479679
Ген2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, а кто подскажет
Как выполнить sqlexec с несколькими командами и получить ответ ?
Работа в VFP7.
При выполнении одной команды никаких проблем...
...
Рейтинг: 0 / 0
Как выполнить sqlexec с несколькими командами и получить ответ ?
    #33479691
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. SQLMORERESULTS( )
...
Рейтинг: 0 / 0
Как выполнить sqlexec с несколькими командами и получить ответ ?
    #33479783
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
local cSql

cSql = [insert into DBName.dbo.TableName(FieldName1,FieldName2,...) values(?val1,?val2,...) insert into DBName.dbo.TableName2(FieldName1,FieldName2,...) values(?val1,?val2,...) select * from DBName.dbo.TableName select * from DBName.dbo.TableName2 ]

SQLExec(nConnect,cSQL, 'cursor1','cursor2')
...
Рейтинг: 0 / 0
Как выполнить sqlexec с несколькими командами и получить ответ ?
    #33479816
Ген2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нее...

Так не пойдет ...

MoreResult не пойдет, т.к. SQLSETPROP(2, "BatchMode", .t. )

Второй вариант с двумя курсорами в VFP7 не работает ...
Вот простой пример :

SQLEXEC(2,"select 1") -- выдает единичку в курсоре,

а вот такой вариант ничего не возвращает ...

SQLEXEC(2,"set rowcount 300 select 1")
...
Рейтинг: 0 / 0
Как выполнить sqlexec с несколькими командами и получить ответ ?
    #33479829
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня работает. И курсоров может быть более двух.
Но так делать не удобно.

Лучше использоватиь ХП

local cSql

cSql = [exec DBName.dbo.ProcName ?param1,?param2,... ]

SQLExec(nConnect,cSQL, 'cursor1','cursor2',....)
...
Рейтинг: 0 / 0
Как выполнить sqlexec с несколькими командами и получить ответ ?
    #33479865
Ген2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так в том-то все и дело... я хотел всего лишь принять параметр(переменную) из процедуры... но она ничего возвращать не желает...

А какой используется VFP ? У меня VFP7 и там конструкция

SQLExec(nConnect,cSQL, 'cursor1','cursor2',..)

выдает "too many arguments" -- (((
...
Рейтинг: 0 / 0
Как выполнить sqlexec с несколькими командами и получить ответ ?
    #33480403
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кикие проблеммы!
SQLEXEC выполняет не команду T-SQL, а целый пакет (batch)!
В пакет может входить столько команд, сколько хотите (есть граничения по длине, но они вряд ли вами будут достигнуты). Некоторые команды T-SQL должны быть в отдельном пакете (т.е. в отдельной команде SQLEXEC), но вы их вряд ли будете использовать (CREATE VIEW..., CREATE PROCEDURE и пр..). Команды T-SQL имеет свободный формат (мнемоническое правило просто: где можно ставить пробел, можно ставтить сколько угодно пробелов и символов перевода каретки).
Пример FoxLamer должен прекрасно работать в VFP 9.0, но имя передаваемого курсора должно быть одно. Если код команд на T-SQL возвращает несколько RowSet, то каждые следующий курсор VFP будет иметь имя с соот. индексом ('cursor1','cursor2', ...). В VFP 9.0 добавился 4-ый параметра aCountInfo для получения информации о заполняемом в данный момент курсоре. Подробнее смотрите в HELP. Свой пример FoxLamer выполянл в VFP 9, поэтому VFP и не ругался, а имена курсоров FoxLamer дал в соот.с правилами, который сам VFP и поддерживает. Если бы он свой пример написал так SQLExec(nConnect,cSQL, 'cursor1','cursor10'), то увидел бы, что курсоры создались бы с именами 'cursor1' и 'cursor2', а не 'cursor1' и 'cursor10'. Четвертый параметр команды воспринимается НЕ как имя курсора, а в соот. с синтаксисом команды (см. HELP). Если эту команду попытаться выполнить в VFP не 9-ой версии, то будет просто ошибка, как у Ген2.
С уважением, Алексей
...
Рейтинг: 0 / 0
Как выполнить sqlexec с несколькими командами и получить ответ ?
    #33480669
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Aleksey-K
Спасибо за поправку.
Но пример надуманный. Я на практике не использую более одного возвращаемого курсора. Да и передаю на сервер, как правило, имя процедуры, а не набор команд)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как выполнить sqlexec с несколькими командами и получить ответ ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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