繁体   English   中英

¿如何通过EF调用oracle中的现有存储过程?

[英]¿How to call existing stored procedure in oracle by EF?

我有一个需要从我的项目中调用的存储过程,由于我从未使用过Oracle和Entity Framework,因此遇到了这个问题,您能帮我如何调用存储过程吗?

这是我的存储过程:

create or replace procedure Random.SP_Random(r_cursor out sys_refcursor)
as
begin
    open r_Cursor for
        select element1, element2, element3 from Random.table;
end;

这是读取Sys_RefCursor的示例函数

    public void SPRandom()
    {
        OracleConnection connection = this.Database.GetOracleConnection();
        bool needClose = false;
        if (connection.State != ConnectionState.Open)
        {
            connection.Open();
            needClose = true;
        }

        try
        {
            using (OracleCommand cmd = connection.CreateCommand())
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = @"Random.SP_Random";

                OracleParameter outParameter = cmd.CreateParameter();
                outParameter.ParameterName = "r_cursor";
                outParameter.ParameterType = OracleDbType.Cursor;
                outParameter.Direction = ParameterDirection.Output;

                cmd.Parameters.Add(outParameter);


                using (OracleDataReader reader =  cmd.ExecuteReader())
                {
                    while(reader.Read())
                    {
                         .... read your data
                    }
                }
            }
        }
        finally
        {
            if (needClose)
            {
                connection.Close();
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM