Batch multiple select statements when calling Oracle from ADO.NET

后端 未结 4 1196
猫巷女王i
猫巷女王i 2020-12-10 12:05

I want to batch multiple select statements to reduce round trips to the database. The code looks something like the pseudo code below. It works perfectly on SQL Server, but

4条回答
  •  没有蜡笔的小新
    2020-12-10 13:05

    An example in C# with multiple cursors and an input parameter:

    string ConnectionString = "connectionString";
    OracleConnection conn = new OracleConnection(ConnectionString);
    StringBuilder sql = new StringBuilder();
    
    sql.Append("begin ");
    sql.Append("open :1 for select * from table_1 where id = :id; ");
    sql.Append("open :2 for select * from table_2; ");
    sql.Append("open :3 for select * from table_3; ");
    sql.Append("end;");
    
    OracleCommand comm = new OracleCommand(sql.ToString(),_conn);
    
    comm.Parameters.Add("p_cursor_1", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
    
    comm.Parameters.Add("p_id", OracleDbType.Int32, Id, ParameterDirection.Input);
    
    comm.Parameters.Add("p_cursor_2", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
    
    comm.Parameters.Add("p_cursor_3", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
    
    conn.Open();
    
    OracleDataReader dr = comm.ExecuteReader();
    

提交回复
热议问题