【发布时间】:2021-08-28 15:50:18
【问题描述】:
我正在使用 Oracle 数据库。我有一个名为Room 的表,然后我创建了这个存储过程:
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。 我该如何解决这个问题?
【问题讨论】:
标签: c# sql database oracle stored-procedures