使用 C# 代码处理 Oracle 存储过程的输出参数
Posted
技术标签:
【中文标题】使用 C# 代码处理 Oracle 存储过程的输出参数【英文标题】:Handle output parameter of an Oracle stored procedure using C# code 【发布时间】: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
。 我该如何解决这个问题?
【问题讨论】:
【参考方案1】:猜你想打印参数的Value属性。
MessageBox.Show((string)cmd.Parameters["RID_Out"].Value, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
【讨论】:
以上是关于使用 C# 代码处理 Oracle 存储过程的输出参数的主要内容,如果未能解决你的问题,请参考以下文章
.Net 调用 Oracle Array 绑定存储过程输出 VarChar2
使用 Oracle 存储过程中的 refcursor 值填充 C# 数据表
从 C# 执行 Oracle 存储过程 - 调用中的参数数量或类型错误