|
|
|
Как выполнить sqlexec с несколькими командами и получить ответ ?
|
|||
|---|---|---|---|
|
#18+
Господа, а кто подскажет Как выполнить sqlexec с несколькими командами и получить ответ ? Работа в VFP7. При выполнении одной команды никаких проблем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 17:07 |
|
||
|
Как выполнить sqlexec с несколькими командами и получить ответ ?
|
|||
|---|---|---|---|
|
#18+
См. SQLMORERESULTS( ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 17:09 |
|
||
|
Как выполнить sqlexec с несколькими командами и получить ответ ?
|
|||
|---|---|---|---|
|
#18+
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') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 17:48 |
|
||
|
Как выполнить sqlexec с несколькими командами и получить ответ ?
|
|||
|---|---|---|---|
|
#18+
Нее... Так не пойдет ... MoreResult не пойдет, т.к. SQLSETPROP(2, "BatchMode", .t. ) Второй вариант с двумя курсорами в VFP7 не работает ... Вот простой пример : SQLEXEC(2,"select 1") -- выдает единичку в курсоре, а вот такой вариант ничего не возвращает ... SQLEXEC(2,"set rowcount 300 select 1") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 18:00 |
|
||
|
Как выполнить sqlexec с несколькими командами и получить ответ ?
|
|||
|---|---|---|---|
|
#18+
У меня работает. И курсоров может быть более двух. Но так делать не удобно. Лучше использоватиь ХП local cSql cSql = [exec DBName.dbo.ProcName ?param1,?param2,... ] SQLExec(nConnect,cSQL, 'cursor1','cursor2',....) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 18:07 |
|
||
|
Как выполнить sqlexec с несколькими командами и получить ответ ?
|
|||
|---|---|---|---|
|
#18+
Так в том-то все и дело... я хотел всего лишь принять параметр(переменную) из процедуры... но она ничего возвращать не желает... А какой используется VFP ? У меня VFP7 и там конструкция SQLExec(nConnect,cSQL, 'cursor1','cursor2',..) выдает "too many arguments" -- ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 18:23 |
|
||
|
Как выполнить sqlexec с несколькими командами и получить ответ ?
|
|||
|---|---|---|---|
|
#18+
А кикие проблеммы! 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. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 08:43 |
|
||
|
Как выполнить sqlexec с несколькими командами и получить ответ ?
|
|||
|---|---|---|---|
|
#18+
2 Aleksey-K Спасибо за поправку. Но пример надуманный. Я на практике не использую более одного возвращаемого курсора. Да и передаю на сервер, как правило, имя процедуры, а не набор команд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 10:46 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33479679&tid=1592625]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 496ms |

| 0 / 0 |
