Vamos por partes, que diría Jack "el destripador".

El procedimiento no se "guarda" en ningún sitio. Cuando tú ejecutas el create procedure, el motor de base de datos de DB2 genera un programa. Concretamente un programa en lenguaje C. Y almacena la definición del mismo en una tabla del propio motor de base de datos, llamada QSYS2/SYSROUTINES. Sobre esta tabla hay creada un vista denominada QSYS2/SYSPROCS que filtra sólo aquellos que son procedimientos. Desde esta tabla es desde donde puedes ver la descripción del mismo.

Si quieres guardarte el fuente, lo puedes hacer en cualquier miembro, sin tipo, con tipo SQL, TXT, lo que quieras. Esto te servirá para, si quieres volver a crear el procedimiento de nuevo, poder hacerlo sólo con ejecutar:

RUNSQLSTM SRCFILE(biblioteca/archivofuente) SRCMBR(miembro).

Esto es "parecido" a compilarlo, ya que volverá a crear el objeto (el programa C, en resumen).

Las llamadas se pueden hacer desde RPG, siempre que el tipo de programa sea un SQLRPG o SQLRPGLE y lo hagas dentro de un EXEC SQL. Si el procedimiento devuelve un RESULT SET, podrás utilizarlo en tu programa como un cursor SQL.

Desde CL puedes lanzar la ejecución del procedimiento con RUNSQL. Lo que no he probado nunca es a procesar un RESULT SET desde un CL y no sé si hay posibilidad, pero si tu procedimiento, por ejemplo, lo que hace son actualizaciones en tablas o similar, te funcionaría sin problemas.

No sé si esto aclara alguna de las dudas.

Saludos.
Juan Carlos.

---
https://paredes.info
juancar...@paredes.info

El 13/08/2019 08:43, Javier B. escribió:
Buenos días :

 He encontrado este ejemplo y me han surgido algunas dudas,  a ver si
me las podéis aclarar por favor :

 -¿Donde guardo el procedimiento sin utilizar IFS?

 -¿Si lo tengo que guardar en un miembro,  de qué tipo tiene que
ser?

 -¿Se tiene que compilar?

 -¿La llamada (CALL) la puedo hacer desde un CL o un RPG?

 Un saludo y gracias,

 Javier

-------------------------

FROM: forum.help400-boun...@listas.combios.es
<forum.help400-boun...@listas.combios.es> on behalf of Alberto
Martinez <alberto.marti...@roler.es>
SENT: Monday, August 12, 2019 12:53:29 PM
TO: forum.help400 <forum.help400@listas.combios.es>
SUBJECT: Re: Procedimientos almacenados

Hola.
Pues te puedo explicar cómo lo hago yo, pero seguro que hay gustos
para todo.
De entrada como te dije, hay procedures que llaman a programas . Yo
personalmente, lo que hago es SIEMPRE llamar primero a una CL que me
añada las bibliotecas necesarias y la CL llama al programa.
Tengo una biblioteca con todos los procedures y éstas Cl's. El
programa en si, lo guardo donde le toca.
Luego los procedures en si, los creo con los scripts SQL del iaccess y
me los guardo en una carpeta o subcarpeta por ejemplo del IFS
De todas maneras el iacces(o antes el iseries Access for Windows a
través del Sistem i Navigator) tienen tanto un asistente para crear
los procedures como una opción para recuperar el fuente de uno que ya
esté hecho.
Quiero decir, que si el procedure está ahí, SIEMPRE vas a poder
recuperar el fuente.

De:        "Fco. Javier Baca L." <reiv...@hotmail.com>
Para:        "forum.help400" <forum.help400@listas.combios.es>
Fecha:        12/08/2019 11:34
Asunto:        ** Newsletter ** Re:  Procedimientos almacenados
Enviado por:        forum.help400-boun...@listas.combios.es

-------------------------

Muchas gracias Alberto por la explicación, una pregunta tonta,
¿donde tengo que almacenar los procedimientos,  por ejemplo,  en un
miembro de la QRPGSRC?

Saludos,
Javier

De: Alberto Martinez
Enviado: lunes, 12 de agosto 9:20
Asunto: Re:  Procedimientos almacenados
Para: forum.help400

Hola.
Yo los utilizo para recuperar datos y/o ejecutar programas del Iseries
desde otros entornos y otros servidores(Java, php, Domino....).
Un stored puede simplemente hacer un select de tablas y devolver un
valor o resultset al programa llamador, o puede ejecutar un programa
RPGLE como lo ejecutarías desde el entorno Iseries con todo lo que
ello conlleva.
Un mismo stored lo puedes ejecutar desde todos los entornos. Llamas al
stored y él hace en el Iseries lo que tenga que hacer, y si es el
caso, devuelve valores al llamador.En este caso, con un sólo programa
en el Iseries atiendes a todos los entornos que lo necesiten, y es
múcho más rápido evidentemente que crear un programa entero para
cada entorno.
Un ejemplo:
Imagina que tienes un programa en RPGLE que recibe parámetros y con
ellos te crea un pedido y envia un email al proveedor.
En el programa se hacen consultas evidentemente de artículos y
proveedores entre otras cosas.
Pues bien, creas un procedure para cada consulta que podrás llamar
desde una Web, desde una tablet...desde un programa en .Net...te
devuelve los datos y tú los muestras en el entorno que sea
y luego creas otro procedure que recibe los parámetros y te crea el
pedido, y envia un email, que evidentemente también podrás llamar
desde cualquier sitio.
Además de que tiene un rendimiento brutal, no tienes que hacer un
programa de consulta o gestión que ataque al Iseries para cada
entorno, sólamente la parte de front-end y con un sólo programa en
el Iseries ya lo cubres todo.
No sé si me explico.
Aparte de esto, comentar que van a nivel de BBDD y por lo tanto, en
caso de que no encuentres librerías específicas para trabajar con el
Iseries(las tienes por ejemplo en PHP y Java) siempre puedes recurrir
al ODBC.
Salu2

De:        "Fco. Javier Baca L." <reiv...@hotmail.com>
Para:        "'forum.help400'" <forum.help400@listas.combios.es>
Fecha:        11/08/2019 23:26
Asunto:        ** Newsletter ** Procedimientos almacenados
Enviado por:        forum.help400-boun...@listas.combios.es

¿Alguien me podría explicar por favor cómo funcionan los
procedimientos almacenados?,  me gustaría saber para qué se
utilizan,  cómo crearlos,  dónde crearlos y como ejecutarlos.

Un saludo y gracias,

Javier
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd [1]
)
Forum.Help400 © Publicaciones Help400, S.L.

____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd [1]
)
Forum.Help400 © Publicaciones Help400, S.L.


Links:
------
[1] http://bit.ly/db68dd
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a