Я пытаюсь получить результат из хранимой процедуры.Я нашел этот поток и немного изменил его по своему усмотрению.
Вот мой код хранимой процедуры MYSQL:
DROP PROCEDURE IF EXISTS `InsertList`;
CREATE DEFINER = `root`@`localhost` PROCEDURE `InsertList`(IN fName VARCHAR(20), IN fType VARCHAR(20), IN fFood varchar(20), OUT res INT)
BEGIN
insert into tblguest (firstname, confirm, food) values (fName, fType, fFood);
select count(firstname) from tblguest into res;
END;
Вот мой код VB6:
Private Sub Command8_Click()
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim result As Integer
Set cmd = New ADODB.Command
cn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=localhost;" & " DATABASE=test;" & "UID=root;PWD=123;"
cn.Open
Set cmd.ActiveConnection = cn
cmd.CommandType = adCmdText
cmd.CommandText = "Call InsertList(?,?,?,@fResult)"
cmd.Parameters.Append cmd.CreateParameter("fName", adVarChar, adParamInput, 10, Text4.Text)
cmd.Parameters.Append cmd.CreateParameter("fType", adVarChar, adParamInput, 10, Text5.Text)
cmd.Parameters.Append cmd.CreateParameter("fFood", adVarChar, adParamInput, 10, Text6.Text)
'cmd.Parameters.Append cmd.CreateParameter("result", adInteger, adParamOutput)
Set rs = cmd.Execute
Set rs = cn.Execute("select @fresult as theresult")
If Not rs.EOF Then
Debug.Print "result is: " & rs.Fields(0)
rs.MoveNext
End If
rs.Close
cn.Close
End Sub
Часть "cmd.Parameters.Append cmd.CreateParameter("result", adInteger, adParamOutput)
" намеренно закомментирована, так как при активации она выдаст ошибку.
Когда нажата командная кнопка, она не выдает никакой ошибки.Но это также не дает правильного вывода.Эта строка "Debug.Print "result is: " & rs.Fields(0)
" в результате "?"(да, он печатает знак вопроса)
Пожалуйста, помогите.Спасибо.