私はC#2010で単純なストアドプロシージャを呼び出そうとしています。 IN引数のみでOKですが、OUT引数を使用すると機能しません。 phpmyadminのでC#のMysqlコネクタを使用したストアドプロシージャ
:次に
drop procedure if exists insert_artist;
delimiter $$
create procedure insert_student(IN name VARCHAR(100), OUT id INT)
begin
insert into student(name) values(name);
set id = last_insert_id();
end$$
delimiter ;
それが正常に動作しています
call insert_student("toto",@id);
select @id;
を使用。 C#で今すぐ
、:は、ExecuteNonQueryを実行するときに
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
using (MySqlCommand command = connection.CreateCommand())
{
command.CommandText = "insert_student";
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Parameters.AddWithValue("@name", "xxxx");
command.Parameters.AddWithValue("@id",MySqlDbType.Int32);
command.ExecuteNonQuery();
Console.WriteLine("**** " + command.Parameters["@id"].Value);
}
}
)(私に例外を与える:
OUT or INOUT argument 2 for routine insert_student is not a variable or NEW pseudo-variable in BEFORE trigger
ストアドプロシージャ内のアウトargmentない同じ事は正常に動作しています。
だから?どうしましたか ?
ありがとうございました。
私は覚えていませんが、2番目のパラメータで 'Direction'または' ParameterDirection'プロパティ*(またはそのようなもの)*を 'Out'に設定する必要があります。 –
[OK]を追加しています:command.Parameters ["@ id"]。Direction = System.Data.ParameterDirection.Output;ありがとうatornblad。 – tweetysat
興味のある方には、MySQL/c#Visual Studio 2015の動作例を示しました[こちら](http://stackoverflow.com/a/38706288)。その状況はINとOUTのパラメータの1つでした。当然焦点は「OUT」にあった。 – Drew