Имеется 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 параметра процедура вызывается без проблем.
В чем причина?