SmartBeanDad 2014-04-08 09:42 采纳率: 0%
浏览 2550

VB 读取 MySql 存储过程返回值

-- 我定义的存储过程如下,很简单的一个过程,并且在Cmd命令里面运行是正常的。
USE appraisesystem;
DROP procedure IF EXISTS protest;

DELIMITER $$
USE appraisesystem$$
CREATE DEFINER=root@% PROCEDURE protest(Word varchar(100),out lens int)
BEGIN
set lens=length(Word);
END$$

DELIMITER ;
-- 读入一个字符串,返回它的长度,就是这个简单过程
-- appraisesystem 是数据库名称;protest 是存储过程名称;
-- 然后我在 VB 里面调用

Private Sub Command2_Click()
Dim Cnn As New ADODB.Connection
Call MySqlConnect("appraisesystem", Cnn) '连接数据库的自定义过程
Dim Cmd As New ADODB.Command
Cmd.ActiveConnection = Cnn

Cmd.CommandText = "protest"
Cmd.CommandType = adCmdStoredProc

Dim Wd As New ADODB.Parameter
Dim ln As New ADODB.Parameter

Dim TestWord As String
TestWord = "hello"
Set Wd = Cmd.CreateParameter("Wd", adVarChar, adParamInput, 100, TestWord)
Set ln = Cmd.CreateParameter("ln", adInteger, adParamOutput)

Cmd.Parameters.Append Wd
Cmd.Parameters.Append ln

Cmd.Prepared = True
Cmd.Execute

MsgBox ln.Value
End Sub

-- MySqlConnect 是VB里面一个用来连接数据库的过程,这个是没有问题的
-- 运行后的问题提示如下:

[mysql]...OUT or INOUT argument 2 for routine appraisesystem.protest is not a variable or NEW pseudo-variable in BEFORE trigger
请那为高手帮忙给看看是哪里错了,我总觉得是参数的问题,但是就是搞不定

  • 写回答

1条回答

  • SmartBeanDad 2014-04-08 09:55
    关注

    补充:只有输入(in)参数的给数据库写入内容的过程我已经搞定了;用Recordset 对象返回值的过程也搞定了;就差一个用(out)参数返回值的搞不定,请求帮助,谢谢

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?