powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Хранимые процедуры SQL
21 сообщений из 21, страница 1 из 1
Хранимые процедуры SQL
    #32343011
zone51
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вызываю процедуру SQL сервера из фокса командой SQLEXEC(), передавая при этом параметры. Процедура выполняется нормально, но выходные параметры в фокс не возвращаются (а должны). Процедура не моя, мож в ней чего подправить нужно? (в Interbase, например, нужно было suspend ставить)
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343047
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код в студию! ;))
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343339
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код процедуры имеется ввиду
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343344
zone51
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это часть SQL-процедуры (начало и конец):

create procedure GET_ART_STRUCTURE (
@ProjectAID INTEGER,
@Expand INTEGER,
@UserID INTEGER,
@Differents INTEGER,
@HidingON INTEGER,
@ManualLinks INTEGER,

@SelectID INTEGER OUTPUT,
@ResultID INTEGER OUTPUT,
@RecordCount INTEGER OUTPUT)
as

DECLARE @resVariants CHAR
DECLARE @IsHidden INTEGER

DECLARE @c1rec_PART_AID INTEGER
DECLARE @c1rec_VARIANTS CHAR
DECLARE @h1rec_PART_AID INTEGER
DECLARE @return_status INTEGER
..................................................
SelectID, ResultID - этим переменным задаются значения и их необходимо вернуть в Visual Fox.
..................................................
SET @RecordCount = (SELECT COUNT(*) FROM ARTSTRU WHERE SELECT_ID = @ResultID)

GO

.............................
Вызов из VF осуществляется командой
SqlExec(descriptor, 'EXEC GET_ART_STRUCTURE 3367,1,0,0,1,1,
@SelectID output, @ResultID output,@RecordCount output')
По идее, должен вернуться курсор с тремя переменными
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343349
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот вопрос уже обсуждался не однократно. Посмотри здесь например.\r
/topic/56793
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343356
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А надо бы так

Код: plaintext
1.
2.
3.
4.
@SelectID = 0 
@ResultID = 0 
@RecordCount  =  0 
SqlExec(descriptor, 'EXEC GET_ART_STRUCTURE 3367,1,0,0,1,1, 
?@SelectID output, ?@ResultID output,?@RecordCount output') 
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343366
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, очепятка!
Код: plaintext
1.
2.
3.
4.
SelectID = 0 
ResultID = 0 
RecordCount  =  0 
SqlExec(descriptor, 'EXEC GET_ART_STRUCTURE 3367,1,0,0,1,1, 
?@SelectID output, ?@ResultID output,?@RecordCount output') 


Ну, вобщем, смысл в том, что перед вызовом SQLexec(), нужно проинициализировать в fox-е переменные, в которые ты собсвенно собираешься получить результат.
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343533
Voevoda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrew_Pr , а ты пробовал?
Это не помогает.
Ведь sqlexec() передает на server только символьную строку, а получает временную таблицу(курсор) с полями, какие должны быть переменные возвращены (по крайней мере так работает с InterBase). А то что SQL-server должен возвратить значения прямо в переменные VFP - это, по моему, фигня.
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343570
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SqlExec(descriptor, 'EXEC GET_ART_STRUCTURE 3367,1,0,0,1,1, 
?SelectID, ?ResultID,?RecordCount') 
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343576
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ до этого ессно три переменные сначала определить как у andrew_Pr
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343596
Voevoda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hel!Riser, sqlexec работает, процедура на сервере выполняется - все хорошо,
НО параметры в VFP НЕ возвращает.
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343611
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hel!Riser

Не именно так как написал andrew_Pr

?@SelectID, ?@ResultID,?@RecordCount

Т.е. кроме вопросительного знака еще и символ "@"

2 Voevoda

Небольшое уточнение:

Фоксовая переменная должна иметь имя, содержащее более 1 символа. Если будет только один символ, то этот код не пройдет.

local cID, a
cID=''
a=''

* Этот код не сработает
=SQLEXEC(nHandler, "EXEC MyProc ?@a")

* А вот это пройдет
=SQLEXEC(nHandler, "EXEC MyProc ?@cID")

И вообще-то обмен между FoxPro и сервером несколько больше чем: передал строку - получил курсор. Просто одномоментно FoxPro может прочитать только один курсор. Но есть еще набор методов, позволяющих прочитать больше одного курсора полученных от сервера именно за один раз.
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343657
Voevoda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, thanks. Все работает
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #32343665
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4 ВладимирМ

Точна! :) Припарил. Если чтоб вернуть, собака нужна. не нужна если просто передать параметр
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Хранимые процедуры SQL
    #33042809
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 ВладимирМ

Код: plaintext
Просто одномоментно FoxPro может прочитать только один курсор. Но есть еще набор методов, позволяющих прочитать больше одного курсора полученных от сервера именно за один раз.

Есть процедура, в которой 2 селекта, тогда вызов:
SQLEXEC(,"EXEC sp_myProc","MyAlias1")
возвращает две таблицы MyAlias1 и RESULT1,
как сделать, чтоб явно получить MyAlias1 и MyAlias2

Thanks!
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #33042811
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 ВладимирМ

Код: plaintext
Просто одномоментно FoxPro может прочитать только один курсор. Но есть еще набор методов, позволяющих прочитать больше одного курсора полученных от сервера именно за один раз.

Есть процедура, в которой 2 селекта, тогда вызов:
SQLEXEC(,"EXEC sp_myProc","MyAlias1")
возвращает две таблицы MyAlias1 и RESULT1,
как сделать, чтоб явно получить MyAlias1 и MyAlias2

Thanks!
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #33042827
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай описание команды SQLMoreResult(). В описании этой команды дан пример ее использования.
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #33042921
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 ВладимирМ

Это понятно, открываются 2 рабочие области, и я переключаюсь между ними.
Но я хочу именить ALIAS второй области с SQLResult1 на нужный мне,
чтоб потом обращаться типа
Код: plaintext
Tab2.name
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #33042927
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 ВладимирМ

Это понятно, открываются 2 рабочие области, и я переключаюсь между ними.
Но я хочу именить ALIAS второй области с SQLResult1 на нужный мне,
чтоб потом обращаться типа
Код: plaintext
Tab2.name
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #33043008
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VFP9 в команде SQLMoreResults() можно указывать имя алиаса. А вообще-то, можно переоткрыть полученный курсор в другой рабочей области с нужным алиасом

Код: plaintext
1.
USE (DBF("SQLResult")) IN  0  AGAIN ALIAS NewResult
USE IN SQLResult

Переоткрытие курсора - это практически мгновенная операция. Никаких дополнительных обращений к серверу нет.
...
Рейтинг: 0 / 0
Хранимые процедуры SQL
    #33043133
Guestttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО !!! Так и сделаю.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Хранимые процедуры SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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