lunes, diciembre 21, 2009

Crear Stored Procedure en AS400

1.- Ejecutar el Iseries Navigator.
2.- Ubicarse en Base de Datos
3.- Selecciona el Servidor.
4.- Selecciona Esquemas
5.- Selecciona la Base de datos.
6.- En la parte de abajo selecciona EJECUTAR UN SCRIPT DE SQL, se abre una ventana donde se escribe todas las instrucciones para crear un STORED PROCEDURE.
7.- Del Menubar seleccionar Ejecutar y click en la opcion Todo, presionar CTRL+R.


Un Ejemplo, donde se crea un SP PWS0001 con parametros para ejecutar internamente a un PWS0001 hecho en RPG

-- Generar SQL
-- Versión: V5R3M0 040528
-- Generado en: 04/07/07 09:54:55
-- Base de datos relacional: S10BF6DB
-- Opción de estándares: DB2 UDB iSeries
-- fecha ultima modificación 20/07/2007

-- **Procedimiento para la consultar el saldo del cliente **************

--DROP PROCEDURE SICOD.PWS0001;

CREATE PROCEDURE SICOD.PWS0001(
INout OFICOD CHAR(2) ,
INout MDCCOD CHAR(3) ,
INout MDCCED CHAR(10) ,
INout MDCCLAACC CHAR(5) ,
INout CLICOD CHAR(7) )
LANGUAGE RPG
SPECIFIC SICOD.PWS0001
NOT DETERMINISTIC
NO SQL
CALLED ON NULL INPUT
EXTERNAL NAME 'SICOP/PWS001'
PARAMETER STYLE GENERAL ;


Aqui tenemos otro ejemplo, creando un STORED PROCEDURE PWS008 en la libreria SICOP.

-- Generar SQL
-- Versión: V5R3M0 040528
-- Generado en: 04/07/07 09:54:55
-- Base de datos relacional: S10BF6DB
-- Opción de estándares: DB2 UDB iSeries
-- fecha ultima modificación 20/07/2007
-- Para Recaudar por Cliente **************
--DROP PROCEDURE SICOD.PWS008;

CREATE PROCEDURE SICOP.PWS008(
INout CLICOD NUMERIC(7),
INout OFICOD NUMERIC(2),
INout CAJCOD NUMERIC(3),
INOut QVALTOT NUMERIC(10,2),
INOUT IP CHAR(40))
LANGUAGE RPG
SPECIFIC SICOP.PWS008
NOT DETERMINISTIC
NO SQL
CALLED ON NULL INPUT
EXTERNAL NAME 'SICOP/PWS008'
PARAMETER STYLE GENERAL ;


> CREATE PROCEDURE SICOP.PWS008( INout CLICOD NUMERIC(7), INout OFICOD NUMERIC(2), INout CAJCOD NUMERIC(3), INOut QVALTOT NUMERIC(10,2), INOUT IP CHAR(40)) LANGUAGE RPG SPECIFIC SICOP.PWS008 NOT DETERMINISTIC NO SQL CALLED ON NULL INPUT EXTERNAL NAME 'SICOP/PWS008' PARAMETER STYLE GENERAL

Nos debe devolver el siguiente mensaje:

Estado de SQL: 01660
Código de proveedor: 7909
Mensaje: [SQL7909] Se ha creado la rutina PWS008, pero no puede salvarse y restaurarse. Causa . . . . . : La rutina PWS008 se ha creado satisfactoriamente en SICOP con un nombre específico de PWS008, pero los atributos de la rutina no se han podido salvar en el objeto de programa o programa de servicio asociado. Si el objeto *PGM o *SRVPGM se salva y luego se restaura, los catálogos SQL no se actualizarán con los atributos de esta rutina. El código de razón es 3.Los códigos de razón y sus significados son los siguientes: 1 -- El programa externo no existía cuando se emitió la sentencia CREATE. 2 -- El esquema del programa externo es QSYS. 3 -- El programa externo no era un ILE *PGM o *SRVPGM. 4 -- Otro trabajo estaba utilizando el programa externo. 5 -- Otro trabajo estaba utilizando el espacio asociado SQL del programa externo. 6 -- El espacio asociado SQL del programa externo no se ha podido expandir. 7 -- El programa externo se ha compilado en un release anterior a V4R4M0. 8 -- El espacio asociado SQL del programa externo ya contiene el número máximo de definiciones de rutina. Recuperación . : Efectúe una de las siguientes acciones en función del cód de razón: 1 -- Asegúrese de que el programa externo existe cuando se emita la sentencia CREATE. 2 -- Asegúrese de que el esquema del programa externo no es QSYS. 3 -- Asegúrese de que el programa externo es un ILE *PGM o *SRVPGM. 4 -- Utilice WRKOBJLCK para asegurar que el programa externo está disponible cuando se crea la rutina. 5 -- Compruebe que el programa externo está disponible cuando se crea la rutina. 6 -- Intente volver a compilar el programa externo para reconstruir el espacio asociado del programa. 7 -- Vuelva a compilar el programa externo en un release más reciente. 8 -- Elimine una de las rutinas actualmente definidas para el programa externo.

La sentencia se ha ejecutado satisfactoriamente, sin avisos (204 ms)

No hay comentarios: