【问题标题】:¿How to call existing stored procedure in oracle by EF?¿如何通过EF调用oracle中已有的存储过程?
【发布时间】:2019-01-04 23:41:05
【问题描述】:
我有一个需要从我的项目中调用的存储过程,由于我从未使用过 Oracle 和实体框架,所以我遇到了这个问题,你能帮助我如何调用存储过程吗?。
这是我的存储过程:
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;
【问题讨论】:
标签:
c#
asp.net-mvc
oracle
entity-framework-6
【解决方案1】:
这里是读取 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();
}
}
}