我需要调用Oracle中的包中的一些函数和过程。
我从来没有和oracle一起工作过,而且我只知道像插入,更新表这样的基本人员,但现在我需要打电话给" vb_new_serial"函数从这里返回整数这个函数function vb_new_serial return integer;
此功能位于包 VN_PKG - > vb_new_serial
这是我在做了一些reasearches之后尝试的代码:
using (var conn = new OracleConnection(strConn2))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "vb_new_serial";
conn.Open();
using (var dr = cmd.ExecuteReader())
{
MessageBox.Show(dr.ToString());
}
}
}
这里是图片
但我在这里什么都没有回来。
我做错了什么?
答案 0 :(得分:1)
是否需要在oracle命令中添加任何参数?因为返回值是添加到oracle命令的第一个参数。
喜欢这个
cmd.Parameters.Add("Return_Value", OracleDbType.Int16,
ParameterDirection.ReturnValue);
答案 1 :(得分:0)
您只需要更改代码以获取Oracle函数返回的整数:
using (var conn = new OracleConnection(strConn2))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "VN_PKG.vb_new_serial";
OracleParameter myReturn = new OracleParameter("myReturn", OracleDbType.Int32, ParameterDirection.ReturnValue);
cmd.Parameters.Add(myReturn);
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show(myReturn.Value.ToString());
}
}