gpt4 book ai didi

mysql - mysql 和 vb.net 出现 "Incorrect number of arguments for PROCEDURE"异常

转载 作者:行者123 更新时间:2023-11-29 00:50:58 34 4
gpt4 key购买 nike

几天来,我一直在尝试让存储过程在 vb.net 中运行,但我似乎无法让它运行。

如果有人能帮助我,我将不胜感激。我一直在努力解决这个问题,但就是找不到解决方案。

Private Sub getID()
Dim ds As New DataSet
Dim con_str = ""
Dim con As MySql.Data.MySqlClient.MySqlConnection = New MySql.Data.MySqlClient.MySqlConnection(con_str)
con.Open()
Dim cmd As MySql.Data.MySqlClient.MySqlCommand = New MySql.Data.MySqlClient.MySqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "getID()"
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.AddWithValue("@id", "113")
Dim da As MySql.Data.MySqlClient.MySqlDataAdapter = New MySql.Data.MySqlClient.MySqlDataAdapter(cmd)
Dim dt As New DataTable
da.SelectCommand.Connection = con
da.Fill(dt)
End Sub

当我尝试运行它时,我在 da.Fill(dt) 行收到异常“PROCEDURE otrs.getID 的参数数量不正确;预期为 1,得到 0”。我真的不知道为什么会这样。我的存储过程中没有声明参数。

我的存储过程应该没问题。从 dbms 中调用它效果很好,但这里还是代码:

delimiter $$
CREATE DEFINER=`otrs`@`%` PROCEDURE `getCIs`()
BEGIN
SELECT
l.source_key AS base_id,
c1.configitem_number AS base_number,
v.name as base_name,
l.target_key AS link_id,
c2.configitem_number AS link_number,
v1.name as link_name,
t.name as link_type
FROM
otrs.link_relation AS l
INNER JOIN
otrs.configitem AS c1
ON l.source_key = c1.id
INNER JOIN
otrs.configitem AS c2
ON l.target_key = c2.id
INNER JOIN
otrs.link_type AS t
INNER JOIN
otrs.configitem_version AS v
ON l.source_key = v.configitem_id
INNER JOIN
otrs.configitem_version AS v1
ON l.target_key = v1.configitem_id;
END$$

是的,我确实使用了搜索功能,并且在谷歌上搜索了很多,但我仍然感谢有关我的问题的任何信息。

于是我发现错了。显然您不需要在过程名称后加上 ()。不过我不是 100% 确定,因为现在什么都没有发生:

Private Sub getID()
Dim ds As New DataSet
Dim con_str = ""
Dim con As MySql.Data.MySqlClient.MySqlConnection = New MySql.Data.MySqlClient.MySqlConnection(con_str)
con.Open()
Dim cmd As MySql.Data.MySqlClient.MySqlCommand = New MySql.Data.MySqlClient.MySqlCommand
cmd.CommandType = CommandType.StoredProcedure
Try
cmd.CommandText = "getID"
Catch ex As Exception
MsgBox(ex.Message())
End Try

cmd.Parameters.AddWithValue("@id", 113)
cmd.Connection = con
Dim da As MySql.Data.MySqlClient.MySqlDataAdapter = New MySql.Data.MySqlClient.MySqlDataAdapter(cmd)
Dim dt As New DataTable
Try
da.Fill(dt)
Catch ex As Exception
MsgBox(ex.Message())
End Try
End Sub

最佳答案

您永远不会真正执行 cmd。另外,正如您上面提到的,您不需要 proc 调用的括号。它应该看起来像这样。

MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter("getID", con);
DataSet DS = new DataSet();
mySqlDataAdapter.Fill(DS);

关于mysql - mysql 和 vb.net 出现 "Incorrect number of arguments for PROCEDURE"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8572119/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com