Я пытаюсь получить результат от хранимой процедуры. Я нашел этот нить и немного изменил его по своему усмотрению.
Вот мой код хранимой процедуры 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)" получается как "?" (да, выводит вопросительный знак)
Пожалуйста помоги. Спасибо.
Okey.i попробует в понедельник.






Для меня это не имеет особого смысла. Пытаюсь понять, на что вы пытаетесь смотреть. Для начала вы определяете выходной параметр как
result, но в вашей функции он называетсяres. Ваша команда не возвращает набор записей, но вы назначаете его набору записей. Вероятно, вам следует установитьCommandType = adCmdStoredProc, а затем извлечь возвращаемое значение изcmd.Parameters("res")