Pregunta: | 60140 - COMO LLAMO STORE PROCEDURA ORACLE CON ASP |
Autor: | Alexis Adrovez |
tengo un package al cual contiene 2 procedimentos almacenados, uno de ellos encargado de insertar datos a la tabla.
El procedimiento o package lo he podido compilar en el toad y me funciona perfecto. El problema es cuando lo llamo desde asp, me da el siguiente error -2147217900 ora-06550: line 1, column 7: pls-00306: wrong number or types of arguments in call to 'ingresa_pedido' ora-06550: line 1, column 7: pl/sql: statement ignored este es el codigo asp set conn = server.createobject("adodb.connection") conn.open cadenaconexion set pobjrec = server.createobject( "adodb.recordset" ) set pobjcom = server.createobject( "adodb.command" ) vvar_nombre = "alexis" vvar_direccion = "aki" vvar_id_comuna =1 vvar_id_ciudad = 1 vvar_id_cliente = 1 vvar_id_producto = 1 vvar_id_trabajo = 1 vvar_fecha ="01/01/1900" vvar_plazo_cotizacion = 3 vvar_observacion ="hola" vvar_modifica_suministro = 1 with pobjcom .activeconnection = conn .commandtext = "pkg_actualiza_pedido.ingresa_pedido" .commandtype = 4 .parameters.refresh .parameters("@var_nombre") = vvar_nombre .parameters("@var_direccion") = vvar_direccion .parameters("@var_id_comuna") = vvar_id_comuna .parameters("@var_id_ciudad") = vvar_id_ciudad .parameters("@var_id_cliente") = vvar_id_cliente .parameters("@var_id_producto") = var_id_producto .parameters("@var_id_trabajo") = vvar_id_trabajo .parameters("@var_fecha") = vvar_fecha .parameters("@var_plazo_c |
Respuesta: | Mar |
Hola. Ante todo los nombres de los parámetros deben ser ls mismos que en el procedimiento, si no te fallará. Si ésto lo tienes así, yo lo hago de la siguiente forma:
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 Espero haberte ayudado |
Respuesta: | Alexis Adrovez |
Intente ejecutar el procedimiento como mencionasta
Set conn = Server.CreateObject("ADODB.Connection") Pero no me resulto....... Intente de la siguiente forma y me resulta solo para procedimientos que tengan como objetivo Insertar o Modificar. SQL = Nombre_Paquete.Procedure(var1,var2,varN) conexion.execute(SQL) De esta forma he podido ejecutar un procedimiento almacenado en Oracle...pero solo para Insertar o Modificar ya que priden parametros de Entrada. Lo que es consulta de datos los cuale me retorna varios registro no me sirve....la vedad ya no se ke hacer...primera vez que me pasa algo asi....ya que con ASP.NET no tengo ningun problema. gracia. |