C# 使用输出参数Npgsql准备语句

C# 使用输出参数Npgsql准备语句,c#,postgresql,prepared-statement,npgsql,C#,Postgresql,Prepared Statement,Npgsql,使用下面的代码,我调用了一个带2个输入参数和1个输出参数的选通过程,但收到了以下错误: Bind消息提供3个参数,但准备好的语句“”需要 二, 我使用了2.1.0版本的Npgsql.dll,我尝试了下一个版本直到3.0.0 但问题依然存在。 我必须使用.NETFramework 3.5 NpgsqlConnection psgConnection = new NpgsqlConnection("<connection string>"); NpgsqlCommand cmd = ne


使用下面的代码,我调用了一个带2个输入参数和1个输出参数的选通过程,但收到了以下错误:

Bind消息提供3个参数,但准备好的语句“”需要 二,

我使用了2.1.0版本的Npgsql.dll,我尝试了下一个版本直到3.0.0 但问题依然存在。 我必须使用.NETFramework 3.5

NpgsqlConnection psgConnection = new NpgsqlConnection("<connection string>");
NpgsqlCommand cmd = new NpgsqlCommand();
psgConnection.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "<stored name>";
cmd.Connection = psgConnection;
NpgsqlParameter par_in_iduser = new NpgsqlParameter("in_iduser", DbType.Int32);
par_in_iduser.Value = IdUser;
cmd.Parameters.Add(par_in_iduser);
NpgsqlParameter par_in_name = new NpgsqlParameter("in_name", DbType.String);
par_in_name.Value = Nome;
cmd.Parameters.Add(par_in_name);

NpgsqlParameter par_out_id_document_search = new NpgsqlParameter("out_id_document_search", DbType.Int32);
par_out_id_document_search.Direction = ParameterDirection.Output;
par_out_id_document_search.Value = 0;
cmd.Parameters.Add(par_out_id_document_search);

cmd.Prepare();
cmd.ExecuteNonQuery();

return Int32.Parse(cmd.Parameters["out_id_document_search"].Value.ToString());
NpgsqlConnection psgConnection=newnpgsqlconnection(“”);
NpgsqlCommand cmd=新的NpgsqlCommand();
psgConnection.Open();
cmd.CommandType=CommandType.storedProcess;
cmd.CommandText=“”;
cmd.Connection=psgConnection;
NpgsqlParameter par_in_iduser=新的NpgsqlParameter(“in_iduser”,DbType.Int32);
par_in_iduser.Value=iduser;
cmd.Parameters.Add(par_in_iduser);
NpgsqlParameter par_in_name=新的NpgsqlParameter(“in_name”,DbType.String);
par_in_name.Value=Nome;
cmd.Parameters.Add(名称中的par_);
NpgsqlParameter par_out_id_document_search=新的NpgsqlParameter(“out_id_document_search”,DbType.Int32);
par_out_id_document_search.Direction=参数Direction.Output;
par\u out\u id\u document\u search.Value=0;
cmd.Parameters.Add(par\u out\u id\u document\u search);
cmd.Prepare();
cmd.ExecuteNonQuery();
返回Int32.Parse(cmd.Parameters[“out\u id\u document\u search”].Value.ToString());

是否可能是out参数未绑定在prepare中?在绑定out参数之前,您是否尝试过将
prepare()
移动到以查看其是否有效?是的,我尝试过,但收到“索引超出范围”,可能是out参数未绑定到prepare中?在绑定out参数之前,您是否尝试将
prepare()
移动到以查看其是否有效?是的,我尝试过,但收到“索引超出范围”