使用带有OUT参数的VB6调用MySQL存储过程

使用带有OUT参数的VB6调用MySQL存储过程,第1张

概述我在 MySQL(Server 5.5)中编写了这个程序 DELIMITER $$DROP PROCEDURE IF EXISTS `InsertList` $$CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertList`(IN fName VARCHAR(20), IN fType VARCHAR(3), IN fFood varcha 我在 MySQL(Server 5.5)中编写了这个程序

DEliMITER $$DROP PROCEDURE IF EXISTS `InsertList` $$CREATE defineR=`root`@`localhost` PROCEDURE `InsertList`(IN fname VARCHAR(20),IN fType VARCHAR(3),IN fFood varchar(20),Out fResult int)BEGIN  insert into tblguest (firstname,confirm,food) values (fname,fType,fFood);  select count(ID) from tblguest into fResult;END $$DEliMITER ;

当我从MysqL query browser调用此过程时,它会按预期返回

Call InsertList ('V1','No','F1',@result);Select @result;

– >它成功返回表中ID的计数

我在VB6中编写了以下代码

Dim res As IntegerOn Error GoTo chkErrSet cmd = New ADODB.Commandcmd.ActiveConnection = cncmd.CommandType = adCmdstoredProccmd.CommandText = "InsertList"cmd.Parameters.Append cmd.CreateParameter("fname",adVarChar,adParaminput,20,Text3.Text)cmd.Parameters.Append cmd.CreateParameter("fType",3,Text2.Text)cmd.Parameters.Append cmd.CreateParameter("fFood",Text1.Text)cmd.Parameters.Append cmd.CreateParameter("fResult",adInteger,adParamOutput)cmd.Executeres = cmd("fResult")MsgBox resExit SubchkErr:    Select Case Err.Number        Case Else            Text4.Text = Err.Number & " - " & Err.Description    End Select

但它尝试运行语句cmd.execute它会引发以下错误:

-2147467259 – [MysqL][ODBC 5.1 Driver][MysqLd-5.5.34]OUT or INOUT argument 4 for routine dbtest.InsertList is not a variable or NEW
pseudo-variable in BEFORE trigger

我见过用于sql的代码,那么MysqL本身是否存在使用带有OUT参数的存储过程的问题?

解决方法 这似乎是MysqL ODBC和C / API中未解决的错误

一种解决方案是使用带有准备变量的sql命令执行该 *** 作:

Dim rs As ADODB.Recordset Set cmd = New ADODB.Commandcmd.ActiveConnection = cncmd.CommandType = adCmdTextcmd.CommandText = "call InsertList(?,?,@fResult)"cmd.Parameters.Append cmd.CreateParameter("fname",Text1.Text)cmd.Execute'And after that,using the same connection,get the value of '@fResult from a single query:Set rs = cn.Execute("select @fResult as fResult")MsgBox rs!fResult

您将获得预期的价值.

总结

以上是内存溢出为你收集整理的使用带有OUT参数的VB6调用MySQL存储过程全部内容,希望文章能够帮你解决使用带有OUT参数的VB6调用MySQL存储过程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1250630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存