Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не возвращается ptOutput параметра TQuery


Страницы:   1 2

Hydroliskus ©   (2007-04-06 14:43:00) 

Использую BDE при работе с ораклом.
Запускаю функцию, находящуюся в пакете. TStoredProc выдает Access violation, поэтому использую TRxQuery.
TRxQuery отрабатывает запрос, содержащий функцию, т е функция срабатывает, но не записывается результирующее значение в Params

Запрос:

BEGIN
 :ID ::= UPDATE_VALUES.ADD_VALUE(....);
END;

Описание функции в пакете:

FUNCTION ADD_VALUE(....) RETURN NUMBER;

Значения полей параметра ID:
DATATYPE = ftInteger
ParamType = ptOutput

Поможите, люди добрые ))

Заранее благодарен.


Val   (2007-04-11 10:25:00) [1]

да не за что, собственно..
>написал .. соответствующие ..
хранимые просто как обертки пакетных пробовал? что-то мне про права все-же думается.


Hydroliskus   (2007-04-10 19:30:00) [2]

2Val спасибо за помощь

написал хранимые процедуры, соответствующие логике работы пакетных функций, все нормально отработало.
Причины траблы с пакетами остались загадкой)


Val   (2007-04-10 10:51:00) [3]

да никаких хитростей. storedprоcname := 'ИМЯ_ПАКЕТА.ИМЯ_ПРОЦЕДУРЫ' и все отличия от вызова обычных процедур.


Hydroliskus   (2007-04-09 18:30:00) [4]

2Val Подскажи, плз, какой синтаксис для вызова пакетных функций из TStoredProc, может я синтаксис напутал, поэтому и access violation.


Hydroliskus   (2007-04-09 18:08:00) [5]


> проблем с правами на пакет нет?


Из PL SQL Developer-e функции запускаются, квери тоже запускает, только вот с возвратом параметров проблема


ANB   (2007-04-09 13:18:00) [6]


> Получается, что единственно возможный способ работы с такими
> функциями - TStoredProc ?

Не единственный, но самый безгеморройный.
А также, ИМХО - через BDE с ораклом работать жутко неудобно и возможны глюки.


Val   (2007-04-07 15:18:00) [7]

проблем с правами на пакет нет?


Hydroliskus   (2007-04-07 01:11:00) [8]

>компонент проинициализирован? базу данных указал? параметры передал? препарировал?

Все сделал. Когда пытаюсь функцию назначить, выдает список процедур, но не видит ту, которая мне нужна

Затем просто записал в этом поле имя функции. Когда попытался задать параметры, то выскочил Access violation (все происходит на этапе дизайна)

Может пакетные функции по-другому передаются ?...

>Если в функции выболняется изменение данных, то из нее сделать SELECT
Получается, что единственно возможный способ работы с такими функциями - TStoredProc ?


Val   (2007-04-06 22:51:00) [9]

компонент проинициализирован? базу данных указал? параметры передал? препарировал?


Hydroliskus   (2007-04-06 19:55:00) [10]

>spResult - это компонент брошенный на форму?

да, TStoredProc* spResult ;


Val   (2007-04-06 19:25:00) [11]

spResult - это компонент брошенный на форму?


Hydroliskus   (2007-04-06 19:04:00) [12]

не правильно написал, код такой:
spResult->StoredProcName = "UPDATE_VALUES.ADD_VALUE";
spResult->ExecProc(); //Access Violation


Hydroliskus   (2007-04-06 18:58:00) [13]

>показывай код со stored proc. у меня не выдает access violation.

spResult->StoredProcName = "UPDATE_VALUES.ADD_VALUE(....) ";
spResult->ExecProc(); //Access Violation

Не обратил внимания, что на этапе дизайна при присвоении полю StoredProcName величины UPDATE_VALUES.ADD_VALUE и установки Active в True, происходит тоже Access Violation

Получаетя, что storedproc не видит этой функции... Может я её неправильно прописал в StoredProcName ?
UPDATE_VALUES - имя пакета
ADD_VALUE - имя функции


Val   (2007-04-06 18:50:00) [14]

>[8] Desdechado ©   (06.04.07 18:14)
согласен.


Desdechado   (2007-04-06 18:14:00) [15]

Val ©   (06.04.07 17:51) [6]
Если в функции выболняется изменение данных, то из нее сделать SELECT нельзя без использования AUTONOMOUS_TRANSACTION, но оно чревато...
Да и результат будет не в Params[0], а в Fields[0]


Val   (2007-04-06 18:10:00) [16]

по поводу 2. - параметр result не пройдет. мысли разбежались, он к первому пункту.


Val   (2007-04-06 17:51:00) [17]

1. показывай код со stored proc. у меня не выдает access violation.
2. если используешь квери - запрос из dual, как уже говорили. после выполнения id := Q.Params[0].AsInteger или Q.ParamByName('Result').AsInteger


Hydroliskus   (2007-04-06 15:58:00) [18]

А как TStoredProc вызывает пакетную функцию ?
->StoredProcName = "<Имя пакета>.<Имя функции>" ?

>А чтобы параметры вертались из квери, желательно поискать свойство >типа ReturnParam.

У параметра есть свойство ParamType. Насколько я понял, если выводится результирующее значение, то ParamType = ptResult. Не помогает (((

>И нафига на это пакетную функцию? Фраза RETURNING в INSERT-запросе >решает эту "проблему" на раз

Дополняю чужую прогу. В базе функции пакетные. Приходится с ними возиться).


Sergey13   (2007-04-06 15:32:00) [19]

> там ID генерится сиквенсом и нужно его получить

И нафига на это пакетную функцию? Фраза RETURNING в INSERT-запросе решает эту "проблему" на раз.


ANB   (2007-04-06 15:31:00) [20]


> TStoredProc выдает Access violation

С чего это вдруг ?

А чтобы параметры вертались из квери, желательно поискать свойство типа ReturnParam.

С компонентами типа TStoredProc такие проблемы почти не возникают.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо