数日間私は試していましたが、vb.netで動作するストアドプロシージャを取得しようとしましたが、作業。「PROCEDUREの引数の数が正しくありません」mysqlと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
私はこれを実行しようとすると、私は例外を取得「PROCEDURE otrs.getIDの引数の数が正しくありませんが、1を予想、0を得た」行da.Fill(DT)に。私は本当になぜこれが起こるのか分かりません。私のストアドプロシージャで宣言された引数はありません。
私のストアドプロシージャは正常です。 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
迅速な回答ありがとうございました。私はそれをしましたが、別の例外があります: "プロシージャまたは関数 'getID()''がデータベース 'otrs''に見つかりません。プロシージャがデータベースに確実にあるので、これは変です。今すぐコードを変更しました:) – OhSnap
少し調べたところ、この例外はほとんどが小文字の大文字と関連していましたが、db-nameは接続文字列とdbの小文字です。 – OhSnap
コマンドタイプが 'CommandType.StoredProcedure'で、' call getID() 'ではなく、' getid'という名前だけを使う必要があります。私はこれを反映するために質問を更新した –