如何运行oracle中的包中的函数(c#)

时间:2014-09-18 09:09:39

标签: c# .net oracle

我需要调用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());
        }
     }
}

这里是图片

enter image description here

但我在这里什么都没有回来。

我做错了什么?

2 个答案:

答案 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());
     }
}