Возврат результата работы хранимой процедуры
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Возврат результата работы хранимой процедуры
с55ee, legacy, ms sql
вот такой код
RestIN DECIMAL(31,10)
CODE
BIND('RestIN',RestIN)
Filesql{PROP:SQL} = 'DECLARE @RestIN MONEY; EXEC dbo.GetRestInVar ''2017-06-21'',''zzz'', @RestIN = @RestIN OUTPUT; SELECT @RestIN'
...и дальше завяз не пойму, как мне получить результат работы ХП
в ms studio строка отрабатывает без проблем.
Подскажите, пожалуйста.
вот такой код
RestIN DECIMAL(31,10)
CODE
BIND('RestIN',RestIN)
Filesql{PROP:SQL} = 'DECLARE @RestIN MONEY; EXEC dbo.GetRestInVar ''2017-06-21'',''zzz'', @RestIN = @RestIN OUTPUT; SELECT @RestIN'
...и дальше завяз не пойму, как мне получить результат работы ХП
в ms studio строка отрабатывает без проблем.
Подскажите, пожалуйста.
Возврат результата работы хранимой процедуры
вот и я так думал! Просто не сказал всю страшную правду - оно ругается
"подключение занято до получения результатов для другого hstmt"
на обычный select типа select * from..... такой ошибки нет
в чем у меня косяк?
"подключение занято до получения результатов для другого hstmt"
на обычный select типа select * from..... такой ошибки нет
в чем у меня косяк?
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 27 раз
- Поблагодарили: 22 раза
- Контактная информация:
Возврат результата работы хранимой процедуры
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Возврат результата работы хранимой процедуры
Не зацикливается хранимка? А то бывает...
А если сервер MS SQL, надо добавить настройку драйвера /Busyhandling=2 (SQL Communications/Connection do not span threads)
А если сервер MS SQL, надо добавить настройку драйвера /Busyhandling=2 (SQL Communications/Connection do not span threads)
Возврат результата работы хранимой процедуры
Читал эту ветку до написания топика, но, стыжусь сказать, не понял в чем там была проблема и как ее решили.
Возврат результата работы хранимой процедуры
Запрос проверял в мс студии, там все отлично отрабатывает.Проблема у меня при передаче результата в кларионовском коде.
А настройку как применить?
Возврат результата работы хранимой процедуры
В словаре для каждой таблицы БД записать строку в Driver Options. Или нажать кнопку с эллипсисом (...) и поискать настройку в диалоге
Или можно в DriverOptions поставить ссылку на переменную ( например, !Glo:DriverOptions), задекларировать Glo:DriverOptions как строку и присвоить ей адекватное начальное значение
Или можно в DriverOptions поставить ссылку на переменную ( например, !Glo:DriverOptions), задекларировать Glo:DriverOptions как строку и присвоить ей адекватное начальное значение
Возврат результата работы хранимой процедуры
А, понял, это driverstring, я так /trusted connection передаю. Спасибо, завтра проверю. Всеж интересно причина ошибки и почему при обычном селекте оно не появляется.Yufil писал(а): ↑22 Июнь 2017, 19:19 В словаре для каждой таблицы БД записать строку в Driver Options. Или нажать кнопку с эллипсисом (...) и поискать настройку в диалоге
Или можно в DriverOptions поставить ссылку на переменную ( например, !Glo:DriverOptions), задекларировать Glo:DriverOptions как строку и присвоить ей адекватное начальное значение
Можно еще до кучи вопрос-достаточно долго работает простой select типа
Select * from tableName в кларионе по сравнению с его же исполнением в ms studio. В кларионе next-ами данные выбираються пару-тройку минут, а в студии выборка отрабатывает за секунды. В чем причина?
Возврат результата работы хранимой процедуры
Сделал так, верно?Yufil писал(а): ↑22 Июнь 2017, 19:19 В словаре для каждой таблицы БД записать строку в Driver Options. Или нажать кнопку с эллипсисом (...) и поискать настройку в диалоге
Или можно в DriverOptions поставить ссылку на переменную ( например, !Glo:DriverOptions), задекларировать Glo:DriverOptions как строку и присвоить ей адекватное начальное значение
SqlDriverOptionsStr = '/Busyhandling=2'
OPEN(MyFile)
IF ERRORCODE() THEN STOP(ERROR() & ' OPEN(MyFile) ').
SET(MyFile)
затем вышеописанный запрос. Результат - та же ошибка, что в начале темы.
- Дед Пахом
- Старичок
- Сообщения: 3136
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 31 раз
- Контактная информация:
Возврат результата работы хранимой процедуры
Что-то я сомневаюсь, что BUSYHANDLING в C5.5 уже был.
С уважением, ДП
Возврат результата работы хранимой процедуры
Это да... Это печально... Тогда надо посмотреть в разделе Using Embedded SQL как пользовать команду CALL (NoresultCall)
Возврат результата работы хранимой процедуры
если следовать хелпу то надо сделать так
BIND('RestOUT',RestOUT)
MyFile{PROP:SQL} = 'NoresultCall dbo.GetRestOUT ''2017-06-21'',''40702810900370000008'' (&RestOUT[OUT])'
и потом безо всяких NEXT результат работы хранимки вернется в переменную RestOUT?
тут меня смущает что кларион отдать ms sql не команду EXEC а команду CALL и, я проверял в мс студии, такая команда на нашей версии не прокатывает....
чеж такое выморочено то......
need HELP!
-
- ✯ Ветеран ✯
- Сообщения: 4999
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Возврат результата работы хранимой процедуры
alex881, привожу пример SQLAnywhere (Вроде тоже Transact-SQL):
Вдруг поможет?
Код: Выделить всё
LOC:View2 VIEW(TempTable)
PROJECT(TMP:Real1)
PROJECT(TMP:Real2)
PROJECT(TMP:Real3)
PROJECT(TMP:Real4)
PROJECT(TMP:Real5)
PROJECT(TMP:Real6)
END
Код: Выделить всё
open(LOC:View2)
set(LOC:View2)
LOC:View2{prop:SQL} = 'execute DBA.GetFreeMinima @Date1=' & LOC:Date1
loop
next(LOC:View2) ! read a record sequentially
if errorcode()
break
end
LOC:MinSumma1 = TMP:Real1
LOC:MinSumma2 = TMP:Real2
LOC:MinSumma3 = TMP:Real3
LOC:Minimum1 = TMP:Real4
LOC:Minimum2 = TMP:Real5
LOC:Minimum3 = TMP:Real6
end
close(LOC:View2)
We are hard at work… for you.
Возврат результата работы хранимой процедуры
ОГРОМНЕЙШЕЕ, БЕСКОНЕЧНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!!!!kreator писал(а): ↑23 Июнь 2017, 15:01 alex881, привожу пример SQLAnywhere (Вроде тоже Transact-SQL):Код: Выделить всё
LOC:View2 VIEW(TempTable) PROJECT(TMP:Real1) PROJECT(TMP:Real2) PROJECT(TMP:Real3) PROJECT(TMP:Real4) PROJECT(TMP:Real5) PROJECT(TMP:Real6) END
Вдруг поможет?Код: Выделить всё
open(LOC:View2) set(LOC:View2) LOC:View2{prop:SQL} = 'execute DBA.GetFreeMinima @Date1=' & LOC:Date1 loop next(LOC:View2) ! read a record sequentially if errorcode() break end LOC:MinSumma1 = TMP:Real1 LOC:MinSumma2 = TMP:Real2 LOC:MinSumma3 = TMP:Real3 LOC:Minimum1 = TMP:Real4 LOC:Minimum2 = TMP:Real5 LOC:Minimum3 = TMP:Real6 end close(LOC:View2)
Через вьюху оно перестало ругаться и я таки добился передачи от хранимки результата ее работы в кларион.
Еще раз благодарю!