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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
15-1145617405
Некто
2006-04-21 15:03
2006.05.21
Админам страшно? =))


3-1143826947
VedunO
2006-03-31 21:42
2006.05.21
Сравнение результата запроса с файлом DBF


9-1130332463
Кефир87
2005-10-26 17:14
2006.05.21
TDXSound без VCL


1-1144325619
DelphiLexx
2006-04-06 16:13
2006.05.21
Половину строки Hint a выделить жирным


2-1146291338
Rubey
2006-04-29 10:15
2006.05.21
Составное имя