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)参数返回值的搞不定,请求帮助,谢谢

    评论

报告相同问题?

悬赏问题

  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败