AS/400 - Ejecucion de procedimientos almacenados desde AS400

 
Vista:

Ejecucion de procedimientos almacenados desde AS400

Publicado por Francisco (2 intervenciones) el 14/09/2018 17:43:31
Hola buenos días a todos.

Hago a este foro la siguiente consulta:
Tengo almacenados los nombres de procedimientos almacenados en una tabla, dependiendo de ciertas condiciones toma un nombre de procedimiento a ejecutar.


El programa que valida las condiciones es un programa en RPGLE, luego este programa RPGLE llama a un SQLRPGLE y le envía el nombre del procedimiento a ejecutar como parámetro, pero no lo esta ejecutando, creo que algo estoy haciendo mal.


Este es el código del programa SQLRPGLE que llama al procedimiento
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
C     *ENTRY        PLIST
C                   PARM                    NUMTEL           12
C                   PARM                    NUMANE           08 0
C                   PARM                    VAREÑE           03
C                   PARM                    PARM01           20
C                   PARM                    PARM02           20
C                   PARM                    PARM03           20
C                   PARM                    PARM04           20
C                   PARM                    PARM05           20
C                   PARM                    NAMESP           30
C                   PARM                    VARRES          100
 *
 
C                   EXSR      PROCE
 *
C                   EVAL      *INLR='1'
C     PROCE         BEGSR
  *
C/EXEC SQL
C+ CALL :NAMESP
C+  (:NUMTEL, :NUMANE, :VAREÑE, :PARM01,
C+   :PARM02, :PARM03, :PARM04, :PARM05, :VARRES)
C/END-EXEC
C                   ENDSR

En la variable NAMESP viene el nombre del procedimiento almacenado, por ejemplo PRUEBA01

Y este es el código del procedimiento almacenado PRUEBA01

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE PROCEDURE QSTCPGMGT.PRUEBA01 (
  IN  P_NUMTEL  CHAR(12),
  IN  P_NUMANE  NUMERIC(08,0),
  IN  P_VAREÑE  CHAR(03),
  IN  P_PARM01  CHAR(12),
  IN  P_PARM02  CHAR(12),
  IN  P_PARM03  CHAR(12),
  IN  P_PARM04  CHAR(12),
  IN  P_PARM05  CHAR(12),
  OUT P_VARRES  CHAR(100)
  )
LANGUAGE SQL
BEGIN
  -- BUSCAMOS EL IMEI DEL TELEFONO RECIBIDO COMO PARAMETRO
  SELECT TCICC INTO P_VARRES FROM QSTCDATGT.V1SERHED
   WHERE TCNTEL = P_NUMTEL;
END

Al compilarlos no me da ningún error de compilación, al ejecutarlos no me da ningún error de ejecución, lo único es que no esta recuperando el valor de respuesta.


Dentro del SQLRPGLE quito el nombre de la variable y le coloco directo el nombre del procedimiento y ejecutarlo con los mismos parámetros, si recupera el valor de respuesta.

Quedo a la espera de sus comentarios, espero me puedan ayudar, gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Juan Pelaez
Val: 133
Oro
Ha mantenido su posición en AS/400 (en relación al último mes)
Gráfica de AS/400

Ejecucion de procedimientos almacenados desde AS400

Publicado por Juan Pelaez (82 intervenciones) el 17/09/2018 20:01:11
Buenas,

Como todo programa hecho en cualquier lenguaje deberías DEBUJEAR la ejecución para ver si está ejecutando correctamente el SQL embebido ( que me da que no ), tienes que comprobar que te entra correctamente el nombre PRUEBA01 en NAMESP, también deberías comprobar si PRUEBA01 se ejecuta correctamente ….

Otro fallo que veo a simple vista es que en el primer programa las variables ( 5 de ellas ) están definidas de 20 posiciones y en PRUEBA01 las defines de 12 …. eso te va a dar problemas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar