使用 C# 代码处理 Oracle 存储过程的输出参数
Handle output parameter of an Oracle stored procedure using C# code
我正在使用 Oracle 数据库。我有一个名为 Room
的 table 然后我创建了这个存储过程:
CREATE OR REPLACE PROCEDURE RETRIEVEROOM
(RoomID IN INTEGER, RID_Out OUT INTEGER)
AS
BEGIN
Select Room.RoomNumber INTO RID_Out
From Room
Where Room.RoomNumber = RoomID;
END;
所以我尝试使用 C# 和以下代码发送输入和输出参数:
private void loadRooms()
{
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "RETRIEVEROOM";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("RoomID", 218); // Here I send the input parameter
cmd.Parameters.Add("RID_Out", "").Direction = ParameterDirection.Output;
cmd.Parameters["RID_Out"].Size = 255;
cmd.ExecuteNonQuery();
MessageBox.Show(cmd.Parameters["RID_Out"].ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
当我尝试在 MessageBox 中打印 output parameter
的值时,它打印的是“RID_Out”,而不是 RID_Out
的值,后者应该是 218
。 我该如何解决这个问题?
猜想您要打印参数的值 属性。
MessageBox.Show((string)cmd.Parameters["RID_Out"].Value, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
我正在使用 Oracle 数据库。我有一个名为 Room
的 table 然后我创建了这个存储过程:
CREATE OR REPLACE PROCEDURE RETRIEVEROOM
(RoomID IN INTEGER, RID_Out OUT INTEGER)
AS
BEGIN
Select Room.RoomNumber INTO RID_Out
From Room
Where Room.RoomNumber = RoomID;
END;
所以我尝试使用 C# 和以下代码发送输入和输出参数:
private void loadRooms()
{
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "RETRIEVEROOM";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("RoomID", 218); // Here I send the input parameter
cmd.Parameters.Add("RID_Out", "").Direction = ParameterDirection.Output;
cmd.Parameters["RID_Out"].Size = 255;
cmd.ExecuteNonQuery();
MessageBox.Show(cmd.Parameters["RID_Out"].ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
当我尝试在 MessageBox 中打印 output parameter
的值时,它打印的是“RID_Out”,而不是 RID_Out
的值,后者应该是 218
。 我该如何解决这个问题?
猜想您要打印参数的值 属性。
MessageBox.Show((string)cmd.Parameters["RID_Out"].Value, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);