Procedimientos almacenados o Stored Procedure con DB2


Los procedimientos almacenados o Stored procedure, como su nombre lo dice son procedimientos almacenados de manera física en la Base de datos (DB por sus siglas en Ingles), pero para ser mas especifico estos son un conjunto de instrucciones que permiten al motor de DB funcionar de manera similar a un lenguaje de programación esto debido a que: acepta parámetros de entrada y devolver valores en parámetros de salida al realizar una llamada desde alguna aplicación u otro Stored Procedure. También puede contener llamados a otros procedimientos. 

Veamos la sintaxis 

>>-CREATE PROCEDURE--procedure-name-----------------------------> 

>--+-----------------------------------------+------------------> 
'-(--+-------------------------------+--)-' 
| .-,-------------------------. | 
| V | | 
'---| parameter-declaration |-+-' 

>--| option-list |--SQL-routine-body--------------------------->< 

parameter-declaration: 

.-IN----. 
>>-+-------+--parameter-name--| parameter-type |--------------->< 
+-OUT---+ 
'-INOUT-' 

parameter-type: 

>>-+-| built-in-type |------------------+---------------------->< 
'-TABLE LIKE--table-name--AS LOCATOR-' 

built-in-type: 
>>-+-+-SMALLINT----+-------------------------------------------------------------------------------------------------+->< 
| '-+-INTEGER-+-' | 
| '-INT-----' | 
| .-(5,0)--------------------. | 
+-+-DECIMAL-+--+--------------------------+-----------------------------------------------------------------------+ 
| +-DEC-----+ '-(integer-+-----------+-)-' | 
| '-NUMERIC-' '-, integer-' | 
| .-(53)------. | 
+-+-FLOAT--+-----------+--+---------------------------------------------------------------------------------------+ 
| | '-(integer)-' | | 
| +-REAL------------------+ | 
| | .-PRECISION-. | | 
| '-DOUBLE--+-----------+-' | 
| .-(1)-------. | 
+-+-+-+-CHARACTER-+--+-----------+----------+----+--------------------+--+----------------------+---------------+-+ 
| | | '-CHAR------' '-(integer)-' | '-CCSID--+-ASCII---+-' '-FOR--+-SBCS--+--DATA-' | | 
| | '-+-+-CHARACTER-+--VARYING-+--(integer)-' +-EBCDIC--+ +-MIXED-+ | | 
| | | '-CHAR------' | '-UNICODE-' '-BIT---' | | 
| | '-VARCHAR----------------' | | 
| | .-(1M)-------------. | | 
| '-+-+-CHARACTER-+--LARGE OBJECT-+--+------------------+----+--------------------+--+----------------------+---' | 
| | '-CHAR------' | '-(integer-+---+-)-' '-CCSID--+-ASCII---+-' '-FOR--+-SBCS--+--DATA-' | 
| '-CLOB------------------------' +-K-+ +-EBCDIC--+ '-MIXED-' | 
| +-M-+ '-UNICODE-' | 
| '-G-' | 
| .-(1)-------. | 
+-+-GRAPHIC--+-----------+-------+--+--------------------+--------------------------------------------------------+ 
| | '-(integer)-' | '-CCSID--+-ASCII---+-' | 
| +-VARGRAPHIC--(--integer--)----+ +-EBCDIC--+ | 
| | .-(1M)-------------. | '-UNICODE-' | 
| '-DBCLOB--+------------------+-' | 
| '-(integer-+---+-)-' | 
| +-K-+ | 
| +-M-+ | 
| '-G-' | 
| .-(1M)-------------. | 
+-+-BINARY LARGE OBJECT-+--+------------------+-------------------------------------------------------------------+ 
| '-BLOB----------------' '-(integer-+---+-)-' | 
| +-K-+ | 
| +-M-+ | 
| '-G-' | 
'-+-DATE------+---------------------------------------------------------------------------------------------------' 
+-TIME------+ 
'-TIMESTAMP-' 

option-list: (The options can be specified in any order, but each option can be specified only one time) 

(1) 
.-FENCED-----. 
>>-LANGUAGE SQL--+------------+---------------------------------> 

>--+-----------------------------------+------------------------> 
| (1) | 
'-EXTERNAL NAME--+-'string'---+-----' 
'-identifier-' 

.-DYNAMIC RESULT SETS 0--------. 
>--+------------------------------+-----------------------------> 
'-DYNAMIC RESULT SETS--integer-' 

>--+------------------------------+-----------------------------> 
'-PARAMETER CCSID--+-ASCII---+-' 
+-EBCDIC--+ 
'-UNICODE-' 

>--+----------------------------------+-------------------------> 
| .-NULTERM---. | 
'-PARAMETER VARCHAR--+-STRUCTURE-+-' 

.-NOT DETERMINISTIC-. .-CALLED ON NULL INPUT-. 
>--+-------------------+--+----------------------+--------------> 
'-DETERMINISTIC-----' 

.-MODIFIES SQL DATA-. .-NO DBINFO-. 
>--+-------------------+--+-----------+-------------------------> 
+-READS SQL DATA----+ 
'-CONTAINS SQL------' 

.-NO COLLID-------------. 
>--+-----------------------+------------------------------------> 
'-COLLID--collection-id-' 

>--+---------------------------------------+--------------------> 
'-WLM ENVIRONMENT--+-name-------------+-' 
'-(--name--,--*--)-' 

.-ASUTIME NO LIMIT-------. .-STAY RESIDENT NO--. 
>--+------------------------+--+-------------------+------------> 
'-ASUTIME LIMIT--integer-' '-STAY RESIDENT YES-' 

.-PROGRAM TYPE MAIN-. .-SECURITY DB2-----. 
>--+-------------------+--+------------------+------------------> 
'-PROGRAM TYPE SUB--' +-SECURITY USER----+ 
'-SECURITY DEFINER-' 

>--+-------------------------------+----------------------------> 
'-RUN OPTIONS--run-time-options-' 

.-COMMIT ON RETURN NO--. .-INHERIT SPECIAL REGISTERS-. 
>--+----------------------+--+---------------------------+------> 
'-COMMIT ON RETURN YES-' '-DEFAULT SPECIAL REGISTERS-' 

.-STOP AFTER SYSTEM DEFAULT FAILURES-. 
>--+------------------------------------+---------------------->< 
+-STOP AFTER--integer--FAILURES------+ 
'-CONTINUE AFTER FAILURE-------------' 


Este es un ejemplo : 

Comentarios

Entradas populares