Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: CL | DM;

Вниз

Люди, ну не оставляйте в беде...   Найти похожие ветки 

 
tovSuhov ©   (2002-03-29 14:36) [0]

Из всех книг под рукой только и-нет. Уже не первый час бьюсь...
В ФАКах искал, в "Поиске"...
Как выполнить ФУНКЦИЮ с моим параметром и получить возвращаемое ею значение?
Ну хоть кусочек кода, други...


 
Val ©   (2002-03-29 14:41) [1]

компонент TStoredProc поможет, параметы и передаются и принимаются :)


 
tovSuhov ©   (2002-03-29 14:48) [2]

Так вот с ним, милым, и мучаюсь...
Есть функция
DBMS_PIPE.SEND_MESSAGE (pipename IN VARCHAR2, timeout IN INTEGER DEFAULT MAXWAIT, maxpipesize IN INTEGER DEFAULT 8192) RETURN INTEGER;
Как у нее вытащить результат?


 
Val ©   (2002-03-29 14:57) [3]

ParamByName("Result") -должно помочь :))


 
tovSuhov ©   (2002-03-29 15:10) [4]

Делаю:
Proced1.ProcedureName = "DBMS_PIPE.SEND_MESSAGE";
Proced1.Parameters.ParseSQL("Exec DBMS_PIPE.SEND_MESSAGE :Param1 :Param2 :Param3",True);
Proced1.Parameters.ParamByName("Param1").Value := "proba";
Proced1.Parameters.ParamByName("Param2").Value := 5000;
Proced1.Parameters.ParamByName("Param3").Value := 8192;
Proced1.Open;
ShowMessage(IntToStr(Proced1.Parameters.ParamByName("Result").Value));


Ругается:
"SEND_MESSAGE is a not procedure or is undefined"
Дело в том, что это функция, и я подозреваю, что с ней надо работать иначе, чем с обычными хранимыми процедурами...


 
USAtyj ©   (2002-03-29 15:16) [5]

Поставь компонент DOA.


 
USAtyj ©   (2002-03-29 15:16) [6]

Поставь компонент DOA.
(Direct Oracle Access кажись).
Там все проще.


 
tovSuhov ©   (2002-03-29 15:25) [7]

>USAtyj :
Я, конечно, извиняюсь...Но, по моему, вопрос поставлен достаточно конкретно. Я уверен, что люди, работающие с БД не один год, не раз сталкивались с необходимостью выполнять на сервере БД различные функции и использовать возвращаемые ими значения. Это, так сказать, основа основ. Вот и я подошел к этому :-)). Вот и прошу уважаемых Мастеров и Зубров поделиться - как оно реализуется...


 
Judith ©   (2002-03-29 15:44) [8]

Ну, во-первых, проверь правильно ли указано у Proced1 DataBaseName.
Во-вторых, ты опечаталься или у тебя действительно
Proced1.ProcedureName = "DBMS_PIPE.SEND_MESSAGE";
Надо бы так
Proced1.StoredProcedureName = "DBMS_PIPE.SEND_MESSAGE";
В-третьих, DBMS_PIPE это пакадж или схема?
И какой у тебя Оракл, какая версия БДЕ?


 
tovSuhov ©   (2002-03-29 15:50) [9]

Опечатался:Proced1.ProcedureName := "DBMS_PIPE.SEND_MESSAGE";
С Proced1 все нормально. Я в нем несколько процедур уже выполнял.
Оракл 8.1.чего-то там...
Так как Proced1 это компонент TADOStoredProc, BDE на него никоим образом не влияет (насколько я знаю).DBMS_PIPE - это package.


 
Val ©   (2002-03-29 15:52) [10]

почему Open, а не ExecProc? можно убрать ParseSQL


 
Judith ©   (2002-03-29 16:52) [11]

А, так у тебя через ADO, тогда по-моему не получится.
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q176936


 
{bas}   (2002-03-29 17:06) [12]

Попробуй в Query написать
select DBMS_PIPE.SEND_MESSAGE(:Param1, :Param2, :Param3) result from dual
делай Query1.Open
и потом MyRes := Query1.FieldByName("Result").AsInteger;


 
ivv ©   (2002-03-29 17:06) [13]

попробуй TQuery, типа:

Query.SQL.Text := "select DBMS_PIPE.SEND_MESSAGE (pipename , timeout , maxpipesize ) from dual";
Query.Open;

result := Query.Fields[0].AsString;


 
{bas}   (2002-03-29 17:06) [14]

Попробуй в Query написать
select DBMS_PIPE.SEND_MESSAGE(:Param1, :Param2, :Param3) result from dual
делай Query1.Open
и потом MyRes := Query1.FieldByName("Result").AsInteger;



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

Текущий архив: 2002.04.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
14-69992
Стас
2002-03-12 09:03
2002.04.22
Обучение


1-69819
Nikit
2002-04-08 12:58
2002.04.22
save/load to/from file


14-70033
Ajax
2002-03-13 19:09
2002.04.22
Текст в .doc


6-69947
hair_fly
2002-02-11 12:55
2002.04.22
Подскажите, плз, сколько портов приемлемо использовать в одной проге ?


6-69951
Димка-1200
2002-02-11 10:03
2002.04.22
Народ, как с помощью TWebBrowser (или чего другого) заполнить поля в HTML