Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Передача парметров через SQLEXEC  [new]
karpi
Member

Откуда:
Сообщений: 157
Добрый день!
Использую функцию SQLEXEC и могу передать передать в хранимую процедуру не более 27 параметров (это есть ограничение в VFP 8.0?). А если мне надо сразу изменить 30 полей в таблице, то создавать две хранимые процедуры?
Кто-нибудь сталкивался с такой проблемой?
Спасибо!
18 янв 06, 09:56    [2264363]     Ответить | Цитировать Сообщить модератору
 Re: Передача парметров через SQLEXEC  [new]
Crip
Member

Откуда:
Сообщений: 2490
Я постоянно передаю куда больше и вообще каким образом у вас ограничение получилось. Код в студию.
18 янв 06, 10:05    [2264388]     Ответить | Цитировать Сообщить модератору
 Re: Передача парметров через SQLEXEC  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Используй не ? (параметры), а составления команды T-SQL типа:
lcCommand = [UPDATE MaySQLTable SET Filed1=] + ALLTRIM(STR(localcur.FieldInt1)) + [, Field2 = '] + ALLTRIM(localcur.FieldStr1) + [', Field3='] + DTOC(localcur.FieldData1) + [' WHERE ID = ] + ALLTRIM(STR(localcur.ID))
SQLEXEC(lh, m.lcCommand)
Я специально привел пример с 3-мя разными типа данных: INT, CHAR и DATA
С уважением, Алексей
18 янв 06, 10:08    [2264404]     Ответить | Цитировать Сообщить модератору
 Re: Передача парметров через SQLEXEC  [new]
karpi
Member

Откуда:
Сообщений: 157
Вот допустим код
= sqlexec(hConn, 'Exec ins_os ?param2,?param3,....?param27')
Если ставить param28, то FOX выдаст синтактическую ошибку
18 янв 06, 10:12    [2264423]     Ответить | Цитировать Сообщить модератору
 Re: Передача парметров через SQLEXEC  [new]
karpi
Member

Откуда:
Сообщений: 157
Попробую пример, предложенный выше, спасибо!
18 янв 06, 10:14    [2264430]     Ответить | Цитировать Сообщить модератору
 Re: Передача парметров через SQLEXEC  [new]
karpi
Member

Откуда:
Сообщений: 157
А хранимая процедура как воспринимает эту строку составления. Что мне в ней менять? Что-то я не понял.
18 янв 06, 10:32    [2264510]     Ответить | Цитировать Сообщить модератору
 Re: Передача парметров через SQLEXEC  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
karpi
Вот допустим код
= sqlexec(hConn, 'Exec ins_os ?param2,?param3,....?param27')
Если ставить param28, то FOX выдаст синтактическую ошибку


Длина вот этого 'Exec ins_os ?param2,?param3,....?param27,?param28' > 254 символов.
Поэтому:
local lcSqlExec as string
lcSqlExec='Exec ins_os ?param2,?param3,....?param27,?param28'
SQLEXEC(lh, m.lcSqlExec)
18 янв 06, 10:43    [2264577]     Ответить | Цитировать Сообщить модератору
 Re: Передача парметров через SQLEXEC  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
А чего тут не понятного. У вас должна получиться строка, которую вы бы набрали из QA для выполнения ее на сервере. И без разницы,что за команда, хоть SELECT @@VERSION, хоть вызов вашей хранимой процедуры
Вот пример с хранимой процедурой:
WITH THISFORM
...
m.lcCommand = [Oborot_Ved_GetOstat2 '] + DTOC(.DateStart) + [', '] + ;
DTOC(.DateEnd) + [']
SQLEXEC(lh, m.lcCommand, "MyResultCursor")
...
ENDWITH
Более сложные примеры можете глянуть тут:http://www.caws.atnet.ru/vfox/sql2.html#sql_exec_sp
С уважением, Алексей
18 янв 06, 10:45    [2264583]     Ответить | Цитировать Сообщить модератору
 Re: Передача парметров через SQLEXEC  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi karpi!

> Использую функцию SQLEXEC

С каким севрером идёт работа, какой используется драйвер, почему именно EXEC
(его вовсе не все SQL сервера и соответствующие ODBC драйверы правильно
воспринимают), а не "обобщёный" специально для ODBC синтаксис с {call
sp(...)} (а уже забота ODBC драйвера как это "перевести" на язык конкретного
SQL сервера - EXEC использовать или ещё что-то).

Posted via ActualForum NNTP Server 1.3

20 янв 06, 01:12    [2271359]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить