1

mysql5.5で.netコネクタを使用しています。「out」パラメータを使用してストアドプロシージャを呼び出そうとすると、でメッセージOUT or INOUT argument 2 for routine is not a variable or NEW pseudo-variable in BEFORE triggerが取得されcmd.ExecuteNonQuery()ます。

なにが問題ですか?

vbコード:

cmd = New MySqlCommand("call testme(@id, @count)", conn)
cmd.Parameters.AddWithValue("@id", id) ' "id" and "count" are integer variables
cmd.Parameters.AddWithValue("@count", count)
cmd.Parameters("@count").Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()

mysqlストアドプロシージャ:

CREATE PROCEDURE testme(in taxid integer, out imageDescCount integer)
BEGIN
set imageDescCount = 23;
End
4

1 に答える 1

3

これを試してみてください

MySQlでストアドプロシージャを作成する

DELIMITER $$
DROP PROCEDURE IF EXISTS `tempdb`.`GetCity` $$
CREATE PROCEDURE  `tempdb`.`GetCity` 
(IN cid INT,
 OUT cname VarChar(50)
)

BEGIN

  SET cname = (SELECT CityName FROM `City` WHERE CID = cid);

END $$

DELIMITER ;

そしてあなたのvb.netコードは

Dim conn As  New MySqlConnection()
conn.ConnectionString = "server=localhost;user=root;database=tempdb;port=3306;password=******;"
Dim cmd As New MySqlCommand()

conn.Open()
cmd.Connection = conn
cmd.CommandText = "GetCity"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@cid", "1")
cmd.Parameters("@cid").Direction = ParameterDirection.Input

cmd.Parameters.AddWithValue("@cname", MySqlDbType.String)
cmd.Parameters("@cname").Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()

Console.WriteLine("City Name: " & cmd.Parameters("@cname").Value) //Access Your Output Value

何か問題があれば教えてください...

ありがとう

于 2012-10-23T04:16:39.003 に答える