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

Вниз

Out парметры в ХП MySQL   Найти похожие ветки 

 
Alex Romanskiy ©   (2006-04-02 14:33) [0]

Есть MySQL-вская ХП, которая имеет один in, и один out параметр.
`GetDiapasons`(PatId    integer, out ErrCode  integer)
В Делфи для работы с процедурой использую ADOQuery. В поле SQL прописываю: call GetDiapasons(:PatId, @ErrCode);
Проблема заключается в том, что out параметр не подхватывается. Во первых, он автоматически не добавляется в список параметров, а во-вторых, даже, если его и добавить, то ему никакие значения не передаются.
Подскажите, плиз, в чем дело?


 
sniknik ©   (2006-04-02 15:29) [1]

в неправильном подборе используемых компонент...
использовать надо ADODataSet (а ADOQuery "предать забвению") ставиш ему тип команды cmdStoredProc, и выбираеш свою процедуру из списка, все проставится как надо, автоматически.


 
Alex Romanskiy ©   (2006-04-02 16:54) [2]

Поставил все как ты говоришь, но параметры автоматически не проставились.
После проставления в ручную генерится комманда:
{ call GetDiapasons(2, 93138848) }
А я это не заказывал -------^  :)


 
sniknik ©   (2006-04-02 17:20) [3]

> Поставил все как ты говоришь, но параметры автоматически не проставились.
должно... конект к базе в момент проставления есть? вернее доступность, подсоеденится он сам должен/попытатся хотябы.

> После проставления в ручную генерится комманда:
> { call GetDiapasons(2, 93138848) }
> А я это не заказывал -------^  :)
ну, мало ли ты там ему вручную понапроставлял... направление (инпут/аутпут/... не указал, значение поставил...)
это генерится где? если с компанента списал то call откуда? не должно быть.


 
Alex Romanskiy ©   (2006-04-02 17:38) [4]

> > Поставил все как ты говоришь, но параметры автоматически
> не проставились.
> должно... конект к базе в момент проставления есть? вернее
> доступность, подсоеденится он сам должен/попытатся хотябы.
Да, конечно. AdoConnection.Connected установлен в true.  
Затем, я бросаю на форму ADODataSet, и указываю  значения 3 полей:
Connection: ADOConnection
CommandType: cmdStoredProc
и непосредственно выбираю свою процедуру:
CommandText: GetDiapasons
Я так понимаю, что после этого параметры уже должны подставиться автоматически. Но этого не происходит.

> > После проставления в ручную генерится комманда:
> > { call GetDiapasons(2, 93138848) }
> > А я это не заказывал -------^  :)
> ну, мало ли ты там ему вручную понапроставлял... направление
> (инпут/аутпут/... не указал, значение поставил...)
> это генерится где? если с компанента списал то call откуда?
>  не должно быть.

Проставляю параметры в ручную следующим образом:
Захожу в параметры, добаляю один параметр:
имя: PatId
направление: pdInput
Значение: для начала поставим 10

Другой параметр:
имя: ErrCode
направление: pdOutput

Затем выставляю свойство Active ADODataseta в true и получаю следующий ErrorMessage:
[MySQL][ODBC 3.51 Driver]You have an error in your SQL syntax; check..... to use near "{call GetDiapasons(10, 93138848)}" at line 1.


 
sniknik ©   (2006-04-02 18:18) [5]

> и непосредственно выбираю свою процедуру:
> CommandText: GetDiapasons
сомнения есть по поводу выбора... (выбирается не "чистое" имя процедуры, там еще добавочки есть. сам небось вписываеш?)

> Я так понимаю, что после этого параметры уже должны подставиться автоматически. Но этого не происходит.
должны. простой select вместо этого сделай. прошло? чтото у тебя с коннектом неладно (а может самой процедурой).

> Проставляю параметры в ручную следующим образом:
> ...
при "автомате" создается 3 параметра, нулевой с именем @RETURN_VALUE (это для mssql, для mysql возможно по другому), два следующих твои... (т.е. уже делаеш чтото не так, добивайся чтобы автомат сработал, хотя бы чтобы посмотреть как надо...)

+ имена у параметров в mssql нацинаются с @@ (в my возможно по другому, но проверь), т.е. имя PatId неправильное, не пройдет.

++ профайлер ловит команду "exec sp_Val;1 1, @P1 output" и еще там предварительно параметр создается...  (не похоже на твое call .... , возможно опять изза различий... х.з. добивайся чтобы сработал автомат)

+++ если процедура не возвращает рекордсета и нужна только ради параметра (не уточнил раньше) то надо использовать ADOCommand.



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

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

Наверх





Память: 0.47 MB
Время: 0.014 c
9-1129832946
Galiaf
2005-10-20 22:29
2006.05.21
Учится хочу.


15-1145828371
Mihurr
2006-04-24 01:39
2006.05.21
Хард инфа Продолжение)))


4-1140715947
spyrytus
2006-02-23 20:32
2006.05.21
INT 16h


9-1129234201
$noopy.MC
2005-10-14 00:10
2006.05.21
Зацените игруху мою (openGL)


3-1143344801
DevilDevil
2006-03-26 07:46
2006.05.21
Вопрос элементарный: как использовать псевдоним





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