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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
3-69704
sir_musatov
2002-03-22 11:14
2002.04.22
индексация Баз Данных


1-69802
kserg@ukr.net
2002-04-10 14:42
2002.04.22
Как


14-70020
ASM
2002-03-16 01:01
2002.04.22
Профессианальная Помощь нужна!


3-69747
совсем Новенький
2002-04-02 13:44
2002.04.22
Базы даных


3-69703
KonuhovSegey
2002-03-30 09:53
2002.04.22
Кто знает подробности о SQL Dialect в IB6





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский