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 ...