第一,创建一个OracleCommand实例,代码是 new global::Oracle.ManagedDataAccess.Client.OracleCommand();
第二,创建一个OracleConnection实例, new global::Oracle.ManagedDataAccess.Client.OracleConnection();,赋值给第一个OracleCommand的Connection属性。
第三,赋值OracleCommand的CommandText属性,该属性等于"select ...."“”insert。。。“”,或者执行存储过程的语句“exec。。。”(定义存储过程的那部分不需要写)
第四,赋值OracleCommand的CommandType属性,该属性是选择一些已经定义好的枚举值,比如global::System.Data.CommandType.Text;就是文本,其他,比如存储过程是哪个值请具体到System.Data.CommandType去看。
示例:
public void test(global::System.Nullable<global::System.DateTime> DATESTART,
global::System.Nullable<global::System.DateTime> DATEEND,
ref object DATA)
{
var _connection = new global::Oracle.ManagedDataAccess.Client.OracleConnection();
_connection.ConnectionString = global::WebApplication2.Properties.Settings.Default.ConnectionString;
var cmd = new global::Oracle.ManagedDataAccess.Client.OracleCommand();
cmd = new global::Oracle.ManagedDataAccess.Client.OracleCommand();
cmd.Connection = _connection;
cmd.CommandText = "G2_NS_PLAT.MYTEST";//存储过程的名称
cmd.CommandType = global::System.Data.CommandType.StoredProcedure;
global::Oracle.ManagedDataAccess.Client.OracleParameter param = new global::Oracle.ManagedDataAccess.Client.OracleParameter();
param.ParameterName = "DATESTART";
param.DbType = global::System.Data.DbType.Date;
param.OracleDbTypeEx = global::Oracle.ManagedDataAccess.Client.OracleDbType.Date;
param.IsNullable = true;
param.SourceColumn = null;
cmd.Parameters.Add(param);
param = new global::Oracle.ManagedDataAccess.Client.OracleParameter();
param.ParameterName = "DATEEND";
param.DbType = global::System.Data.DbType.Date;
param.OracleDbTypeEx = global::Oracle.ManagedDataAccess.Client.OracleDbType.Date;
param.IsNullable = true;
param.SourceColumn = null;
cmd.Parameters.Add(param);
param = new global::Oracle.ManagedDataAccess.Client.OracleParameter();
param.ParameterName = "DATA";
param.DbType = global::System.Data.DbType.Object;
param.OracleDbTypeEx = global::Oracle.ManagedDataAccess.Client.OracleDbType.RefCursor;
param.Direction = global::System.Data.ParameterDirection.Output;
param.IsNullable = true;
param.SourceColumn = null;
cmd.Parameters.Add(param);
if ((DATESTART.HasValue == true))
{
cmd.Parameters[0].Value = ((System.DateTime)(DATESTART.Value));
}
else
{
cmd.Parameters[0].Value = global::System.DBNull.Value;
}
if ((DATEEND.HasValue == true))
{
cmd.Parameters[1].Value = ((System.DateTime)(DATEEND.Value));
}
else
{
cmd.Parameters[1].Value = global::System.DBNull.Value;
}
// OracleDataAdapter调用了cmd的方法,并且把读取出来的数据填充到DataSet上。(可以自己定义一个类ClassA和ClassB,ClassA也去调用cmd的方法,读取数据,把数据填充到ClassB中,比如List<ClassB>。至于调用了cmd的方法叫什么,请百度一下,比如C# Oracle如何一行行读取查询结果:OracleDataReader reader= cmd.ExecuteReader();)
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);//把一个或者多个查询结果集填充到DataSet
if (((cmd.Parameters[2].Value == null)
|| (cmd.Parameters[2].Value.GetType() == typeof(global::System.DBNull))))
{
DATA = global::System.DBNull.Value;
}
else
{
DATA = ((object)(cmd.Parameters[2].Value));
}
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
}
----EF调用Oracle存储过程,参考 https://www.cnblogs.com/lizichao1991/p/6867331.html