La Web del Programador: Comunidad de Programadores
 
    Pregunta:  28812 - ACCEDER A LOS PROCEDIMIENTOS ALMACENADOS DE ORACLE
Autor:  Jaime Martin de la Fuente
Estoy desarrollando una página con ASP y necesito, acceder a los procedimientos almacenados en Oracle.
He intentado por varios métodos, sin conseguirlo.
¿Alguien me puede ayudar?...

Muchas gracias por Anticipado...

  Respuesta:  Mar Alique del Rio
Desde el ASP llamas a una función que será la que llame al procedimiento almacenado de la forma:

function nombre(parametros_entrada,parametros_salida )

Set cmdStoredProc = Server.CreateObject("ADODB.Command")
Set cmdStoredProc.ActiveConnection = ConexBD
donde ConexBD es la conexion a la BD
cmdStoredProc.CommandText = "Inserciones.AltaAnticiposal"
cmdStoredProc.CommandType = 4

'Response.write "<br>" & "acuenta:" & InParameters(0) & "<br>"
'Response.write "sueldo:" & InParameters(1) & "<br>"
'Response.write "anticipos:" & InParameters(2) & "<br>"
'Response.write "irpf:" & InParameters(3) & "<br>"
'Response.write "importe:" & InParameters(4) & "<br>"
'Response.write "cantmaxn:" & InParameters(5) & "<br>"
'Response.write "cantmaxp:" & InParameters(6) & "<br>"
'Response.write "abono:" & InParameters(7) & "<br>"
'Response.write "oficina:" & InParameters(8) & "<br>"
'Response.write "entidad:" & InParameters(9) & "<br>"
'Response.write "DC:" & InParameters(10) & "<br>"
'Response.write "NC1:" & InParameters(11) & "<br>"
'Response.write "comments:" & InParameters(12) & "<br>"
'Response.write "userid:" & InParameters(13) & "<br>"
'Response.write "host:" & InParameters(14)

'****************** LLamada a procedimiento CreateParameter: Name Type Direction Size Value
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("acuenta",adInteger,adParamInput,,InParameters(0))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("sueldo",adDouble,adParamInput,,InParameters(1))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("anticipo",adDouble,adParamInput,,InParameters(2))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("irpf",adDouble,adParamInput,,InParameters(3))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("importe",adDouble,adParamInput,,InParameters(4))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("cantmaxn",adDouble,adParamInput,,InParameters(5))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("cantmaxp",adDouble,adParamInput,,InParameters(6))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("abono",adInteger,adParamInput,,InParameters(7))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("ofic",adInteger,adParamInput,,InParameters(8))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("enti",adInteger,adParamInput,,InParameters(9))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("DC",adInteger,adParamInput,,InParameters(10))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("NC1",adDouble,adParamInput,,InParameters(11))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("Remarks",adVarChar,adParamInput,1000,InParameters(12))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("UserId",adInteger,adParamInput,,InParameters(13))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("Host",adVarChar,adParamInput,20,InParameters(14))
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("Nombre",adVarChar,adParamInput,40,InParameters(15))

cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter("p_DocId",adInteger,adParamOutput)

cmdStoredProc.Execute

p_DocId = cmdStoredProc.Parameters("p_DocId").value

Set cmdStoredProc = nothing
end function

  Respuesta:  Mar Alique del Rio
Desde el ASP llamas a una función que será la que llame al procedimiento almacenado de la forma:

function nombre(parametros_entrada,parametros_salida )

Set cmdStoredProc = Server.CreateObject("ADODB.Command")
Set cmdStoredProc.ActiveConnection = ConexBD
donde ConexBD es la conexion a la BD
Ahora llamas al procedimiento almacenado de la forma:
cmdStoredProc.CommandText = "Nombre_Paquete.NombreProcedure"
cmdStoredProc.CommandType = 4

Creas lo parametros de entrada de la forma (en caso de que los tuviera);
cmdStoredProc.Parameters.Append cmdStoredProc.CreateParameter(Name, Type , Direction , Size, Value )
Tantas veces como parámetros haya (de entrada y de salida)
Ejecutamos el procedure;
cmdStoredProc.Execute

y recogemos los de salida en caso de que los haya:

parametro_salida = cmdStoredProc.Parameters("campo").value

Set cmdStoredProc = nothing
end function