miércoles, 9 de febrero de 2011

Consumo de un REF Cursor desde ASP.NET y ASP

Consumo del REF Cursor desde .NET y desde ASP 3 usando VB6



try            
{
//Aqui se utiliza el modelo de objetos directo de Oracle DataAccess, para ello vamos a crear todos los parametros
//de SP incluido el de tipo REF Cursor que en el modelo de objetos de dotnet
//crea un OracleRadaReader, el cual en el oracleclient tradicional de dot net no está disponible de manera natural.             

    
Oracle.DataAccess.Client.OracleConnection OraConn = new Oracle.DataAccess.Client.OracleConnection();                 
    
OraConn.ConnectionString = "Data Source=$#RVER;User ID=U$#R;Password=PA$%ORD;";                  
    
OraConn.Open();             
    
Oracle.DataAccess.Client.OracleCommand OraComm = new Oracle.DataAccess.Client.OracleCommand("SP_NAME", OraConn);                  
    
OraComm.CommandType = CommandType.StoredProcedure;             
    
OraComm.Parameters.Add ("p1",Oracle.DataAccess.Client.OracleDbType.Int32) ;                 
    
OraComm.Parameters.Add("p2",Oracle.DataAccess.Client.OracleDbType.Int32);                 
    
OraComm.Parameters.Add("precordset", Oracle.DataAccess.Client.OracleDbType.RefCursor, ParameterDirection.Output);                  
    
Oracle.DataAccess.Client.OracleDataReader OraDR = OraComm.ExecuteReader();             
    while 
(OraDR.Read()) {                 
        
//procesamiento del cursor retornado en el datareader
    
}         
} 
catch (Exception ex) {
    
//manejo del error

}
Consumo del REF Cursor desde VB6
Private cnn As ADODB.ConnectionPrivate cmd As ADODB.CommandPrivate RS As ADODB.Recordset
Public  Sub GetCursorFromOracle()

    
Set cnn = New ADODB.ConnectionSet cmd = New ADODB.Command

    
'Muy importante en la cadena de conexion usar el proveedor de datos de Oracle y habilitar el flag de retorno de RecordSets tipo PLSQL, PLSQLRSet=1

    
cnn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=U$ER;User ID=tmdan;Password=PA$WORD;PLSQLRSet=1"
    
cnn.Opencmd.ActiveConnection =     cnncmd.CommandType = adCmdStoredProccmd.CommandText = "SP_NAME"
    
'Se definen los parametros que excepto el de tipo cursor

    
cmd.Parameters.Append cmd.CreateParameter("p1", adVarChar, adParamInput, 100, "")
    cmd.Parameters.Append cmd.CreateParameter(
"p2", adNumeric, adParamInput, 10)

    
Set RS = cmd.Execute

    
Do While Not (RS.EOF)
    
'hacer lo que se necesite con los datos RS(0).Value …

        
RS.MoveNext
    
Loop
 
    
' Limpieza de objetos
    
cnn.Close
    
Set cnn = Nothing
    Set 
cmd = Nothing
    Set 
RS = Nothing
End Sub

Transacciones Fiori

  /UI2/CACHE Register service for UI2 cache use /UI2/CACHE_DEL Delete cache entries /UI2/CHIP Chip Registration /UI2/CUST Customizing of UI ...