From Stored Procedure, return OUT parameter & OUT cursor & parse result (Oracle)

前端 未结 5 2089
走了就别回头了
走了就别回头了 2021-01-01 02:36

Question : Is it possible to return using OUT :

Both : A variable & A cursor, from my code below ??


I saw a similar question for SqlDB but after

5条回答
  •  春和景丽
    2021-01-01 02:49

    Yes, it is possible to have more than one out parameter. Here's an example that I use to call an Oracle stored procedure in c#:

    OracleParameter op = null;
    OracleDataReader dr = null;
    
    /* custom code here. Yours would look a little different */
    OracleCommand cmd = (OracleCommand) this.FactoryCache.Connection.CreateCommand();
    
    cmd.CommandText = "pkg_prov_index.getNextPanel";
    cmd.CommandType = CommandType.StoredProcedure;
    
    op = new OracleParameter("pCurrentPanelId", OracleType.VarChar);
    op.Direction = ParameterDirection.Input;
    op.Value = masterProviderIndex.CurrentPanelId;
    cmd.Parameters.Add(op);
    
    op = new OracleParameter("pRefCursor", OracleType.Cursor);
    op.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(op);
    
    op = new OracleParameter("pReturnCode", OracleType.Number);
    op.Direction = ParameterDirection.Output;
    op.Size = 5;
    cmd.Parameters.Add(op);
    
    op = new OracleParameter("pReturnMessage", OracleType.VarChar);
    op.Direction = ParameterDirection.Output;
    op.Size = 4000;
    cmd.Parameters.Add(op);
    
    cmd.ExecuteNonQuery();
    
    returnCode = Convert.ToInt16(cmd.Parameters[2].Value);
    returnMessage = cmd.Parameters[3].Value.ToString();
    
    dr = (OracleDataReader) cmd.Parameters[1].Value;
    
    while (dr.Read()) {
    }
    

提交回复
热议问题