Форум: "Базы";
Текущий архив: 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