Вызов параметра OUT в MYSQL из VB6

Я пытаюсь получить результат от хранимой процедуры. Я нашел этот нить и немного изменил его по своему усмотрению.

Вот мой код хранимой процедуры 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)" получается как "?" (да, выводит вопросительный знак)

Пожалуйста помоги. Спасибо.

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

dbmitch 09.06.2018 17:21

Okey.i попробует в понедельник.

padjee 09.06.2018 17:37
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
151
0

Другие вопросы по теме