none
Envío de datos a procedimiento almacenado desde asp clásico RRS feed

  • Pregunta

  • Buen día;

    Ya tengo un par de días con este problema y no he logrado resolverlo, espero que alguien pueda ayudarme :( 

    Tengo un procedimiento almacenado (ORACLE) que tiene dos parámetros de entrada uno declarado como VARCHAR2 y otro como INTEGER, además de un SYS_REFCURSOR como salida. El procedimiento almacenado lo he depurado y funciona correctamente (me muestra un listado de usuarios).

    El problema lo tengo cuando intento mandarle los valores desde la página asp hacia el procedimiento, mi código asp es este:

    '---Declaración de variables---'
    
    Dim cn, rsPropuestas, cmd
    Dim param, param2
    
    
    '---Asigno y abro la conexión---'
    
    set cn = Server.CreateObject( "ADODB.Connection" )
    cn.ConnectionString = MiConexion
    cn.Open 
    
    set cmd = server.CreateObject ("ADODB.Command")
    cmd.ActiveConnection = cn
    
    '---Llamo el procedimiento almacenado---'
    
    cmd.CommandText    =  "CONSULTA_REGISTROS"
    cmd.CommandType = 4 
    
    '---Indico parámetros---'
    
    Set param=cmd.Parameters
    param.append cmd.CreateParameter("us_estatus",200,1,2)
    param("us_estatus")="A"
    
    Set param2=cmd.Parameters
    param2.append cmd.CreateParameter("us_id",3,1)
    param2("us_id")=405
    
    
    '---Ejecuto recordset---'
    
    set rsPropuestas = server.CreateObject ( "ADODB.Recordset") 
    set rsPropuestas = cmd.execute

    El error que me manda es el siguiente: 

    Microsoft OLE DB Provider for Oracle error '80040e14'

    ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'CONSULTA_REGISTROS' ORA-06550: line 1, column 7: PL/SQL: Statement ignored

    /proyecto/PagUsuarios.asp, line 81

    Si quito el parámetro del varchar no marca error, no entiendo cuál sea el detalle!! Ya intenté incluir el archivo de las constantes y usarlas en lugar de los valores numéricos, pero tampoco! Ya he probado usar adChar (129), adLongVarChar (201), incluso el adBSTR (8) y nada me funciona!! Qué tengo mal?? Por qué el varchar me da problemas!? :( 

    De antemano gracias por leer y por la ayuda!

    Saludos


    martes, 11 de abril de 2017 16:44

Todas las respuestas

  • Hola

    Prueba a usar el proveedor OLEDB de Oracle, no el de Microsoft.

    Es muy posible que tenga funcionalidad más limitada que el propio de Oracle.

    Salu2,


    José Mª Fueyo

    lunes, 17 de abril de 2017 15:44
  • Hola, gracias por la respuesta! 

    Ya probé hacerlo para no quedarme con la duda y siguió igual, con error en el varchar. Aunque por instrucción debo utilizar el proveedor de Microsoft! :/

    Alguna otra sugerencia!? :(

    Muchas gracias!!

    jueves, 20 de abril de 2017 16:26
  • Hola

    ¿Revisaste que los parámetros definidos en ADO y los que tiene el sp coinciden?

    Puedes usar la forma de crear parámetros en una sola línea, mediante el método CreateParameter del objeto COMMAND

    cmd.Parameters.Append(cmd.CreateParameter....)

    Revisa la documentación para ver la sintaxis.

    Salu2,


    José Mª Fueyo


    viernes, 21 de abril de 2017 11:19
  • Hola!!

    Respecto a la pregunta, sí, ya lo revisé y está todo en orden!! 

    Esa sintaxis igual ya la probé y no funciona!!

    Algo que no había hecho era solo dejar el parámetro varchar, dado que ahí se indicaba el error, pero ¡¡¡SORPRESA!!! Funciona!!!! Entonces el error no es el tipo, sino el número de parámetros, por alguna razón solo acepta un parámetro de entrada!! D: 

    ¿A qué se deberá esto?¿Es normal? :/ 

    Saludos!!


    martes, 25 de abril de 2017 13:17
  • Hola

    Pues no te se decir sin ver el sp, pero Oracle es un mundo.

    Mira en la documentación de Oracle a ver sí hay una dirección de parámetros por defecto, y mira si en tu sp no lo has puesto con lo cual quizás esté tomando por defecto una dirección incorrecta.

    Salu2,


    José Mª Fueyo

    jueves, 4 de mayo de 2017 6:40