Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];

Вниз

Не возвращается ptOutput параметра TQuery   Найти похожие ветки 

 
Hydroliskus   (2007-04-06 14:43) [0]

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

Запрос:

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

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

FUNCTION ADD_VALUE(....) RETURN NUMBER;

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

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

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


 
Desdechado ©   (2007-04-06 15:17) [1]

> RETURN NUMBER;
> DATATYPE = ftInteger
Что-то мне говорит, что такая комбинация неживая.
NUMBER - это, скорее, Double.

Да и вызывать функцию проще так:
SELECT UPDATE_VALUES.ADD_VALUE(....) FROM Dual
Тогда никаких параметров на выход не надо, только входные.


 
Hydroliskus   (2007-04-06 15:27) [2]

>Да и вызывать функцию проще так:
>SELECT UPDATE_VALUES.ADD_VALUE(....) FROM Dual
>Тогда никаких параметров на выход не надо, только входные.

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


 
ANB ©   (2007-04-06 15:31) [3]


> TStoredProc выдает Access violation

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

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

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


 
Sergey13 ©   (2007-04-06 15:32) [4]

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

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


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

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

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

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

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

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


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

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


 
Val ©   (2007-04-06 18:10) [7]

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


 
Desdechado ©   (2007-04-06 18:14) [8]

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


 
Val ©   (2007-04-06 18:50) [9]

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


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

>показывай код со 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 - имя функции


 
Hydroliskus   (2007-04-06 19:04) [11]

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


 
Val ©   (2007-04-06 19:25) [12]

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


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

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

да, TStoredProc* spResult ;


 
Val ©   (2007-04-06 22:51) [14]

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


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

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

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

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

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

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


 
Val ©   (2007-04-07 15:18) [16]

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


 
ANB ©   (2007-04-09 13:18) [17]


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

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


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


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


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


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

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


 
Val ©   (2007-04-10 10:51) [20]

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


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

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

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


 
Val ©   (2007-04-11 10:25) [22]

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.05 c
2-1180973368
Bora_ru
2007-06-04 20:09
2007.07.08
Копирование папок


2-1181665056
hahol
2007-06-12 20:17
2007.07.08
иконки


15-1181299079
zz 5
2007-06-08 14:37
2007.07.08
Delphi 6 и Turbo Delphi (Delphi 2006) на одной машине


8-1161102241
Jimmy
2006-10-17 20:24
2007.07.08
Wmf и Dpi


2-1181852884
Infinityx93
2007-06-15 00:28
2007.07.08
Можно ли в стринггрид выравнять по правому краю во 2ом столбике





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский