Вызов MySQL процедуры c OUT параметром

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Victor27
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 06.06.2010 (Вс) 22:14

Вызов MySQL процедуры c OUT параметром

Сообщение Victor27 » 06.06.2010 (Вс) 22:25

Имеется Visual Basic 6.0 приложение, из которого вызывается простая MySQL процедура:

DROP PROCEDURE IF EXISTS fb.test;
CREATE PROCEDURE fb.`test`(
in id int,
in name varchar(10),
out nr int)
BEGIN
declare i int default 0;
set i=5;
set nr=i;
END;

Вызов процедуры из Visual Basic:

Set cmd = New ADODB.Command
Set inParam = New ADODB.Parameter
Set outParam = New ADODB.Parameter

cmd.CommandType = CommandTypeEnum.adCmdStoredProc
cmd.CommandText = "fb.test"
If conn.State = 0 Then createConnection (conn - Connection-объект)
conn.CursorLocation = adUseServer
cmd.ActiveConnection = conn

Set inParam = cmd.CreateParameter("id", adInteger, adParamInput, 11, 0)
cmd.Parameters.Append inParam
cmd.Parameters("id").Value = 10

Set inParam = cmd.CreateParameter("name", adVarChar, adParamInput, 10, "")
cmd.Parameters.Append inParam
cmd.Parameters("name").Value = "Petrov"

Set outParam = cmd.CreateParameter("nr", adInteger, adParamOutput)
cmd.Parameters.Append outParam
Set rs = cmd.Execute

cmd.Execute выдает ошибку:
[MySQL][ODBC 5.1 Driver][mysqld-5.1.47-community-nt]OUT or INOUT argument 3 for routine
fb.test is not a variable or NEW pseudo-variable in BEFORE trigger.

MySQL Server работает локально под WinXP. Без OUT параметра процедура вызывается без проблем.

В чем причина?

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Вызов MySQL процедуры c OUT параметром

Сообщение HandKot » 07.06.2010 (Пн) 7:24

а в этой процедуцре точно есть 3 параметр?
I Have Nine Lives You Have One Only
THINK!

Victor27
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 06.06.2010 (Вс) 22:14

Re: Вызов MySQL процедуры c OUT параметром

Сообщение Victor27 » 08.06.2010 (Вт) 12:56

HandKot писал(а):а в этой процедуцре точно есть 3 параметр?

Третий параметр как раз и есть OUT-параметр.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Вызов MySQL процедуры c OUT параметром

Сообщение HandKot » 09.06.2010 (Ср) 7:36

а что должны получить на выходе?
и рекордсет и переменную?

посмотрев инет предлагают два варианта
1. отказатся от OUT параметра и возвращать его из процедуры селектом
SELECT MyOutPut from dual;

2. либо наподобии этого
Код: Выделить всё
$query = "CALL sel_realty(1, @p1)";
mysqli_real_query($link, $query) or die (mysqli_error($link));
$res = mysqli_real_query($link, "SELECT @p1");

доработать до АДО не должно быть особых проблем
I Have Nine Lives You Have One Only
THINK!

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Вызов MySQL процедуры c OUT параметром

Сообщение SLIM » 09.06.2010 (Ср) 21:24

Мне кажется что out-параметр не вытянуть во вне.
Пишите жизнь на чистовик.....переписать не удастся.....


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 110

    TopList