SQL Procedural
Enviado por duccred • 5 de Mayo de 2013 • 802 Palabras (4 Páginas) • 442 Visitas
La sintaxis de un procedimiento almacenado es la siguiente:
CREATE OR REPLACE
PROCEDURE <procedure_name> (<param1> [IN|OUT|IN OUT] <type>,
<param2> [IN|OUT|IN OUT] <type>,)
IS
-- Declaracion de variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepcion
END <procedure_name>;
Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.
CREATE OR REPLACE
PROCEDURE Actualiza_Saldo(cuenta NUMBER,
new_saldo NUMBER)
IS
-- Declaracion de variables locales
BEGIN
-- Sentencias
UPDATE SALDOS_CUENTAS
SET SALDO = new_saldo,
FX_ACTUALIZACION = SYSDATE
WHERE CO_CUENTA = cuenta;
END Actualiza_Saldo;
También podemos asignar un valor por defecto a los parámetros, utilizando la clausula DEFAULT o el operador de asiganción.
CREATE OR REPLACE
PROCEDURE Actualiza_Saldo(cuenta NUMBER,
new_saldo NUMBER DEFAULT 10 )
IS
-- Declaracion de variables locales
BEGIN
-- Sentencias
UPDATE SALDOS_CUENTAS
SET SALDO = new_saldo,
FX_ACTUALIZACION = SYSDATE
WHERE CO_CUENTA = cuenta;
END Actualiza_Saldo;
• Notación posicional: Se pasan los valores de los parámetros en el mismo orden en que el procedure los define.
BEGIN
Actualiza_Saldo(200501,2500);
COMMIT;
END;
• Notación nominal:Se pasan los valores en cualquier orden nombrando explicitamente el parámetro.
BEGIN
Actualiza_Saldo(cuenta => 200501,new_saldo => 2500);
COMMIT;
END;
La sintaxis para crear un trigger es la siguiente:
CREATE [OR REPLACE] TRIGGER <nombre_trigger>
{BEFORE|AFTER}
{DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]
[OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]}
ON <nombre_tabla>
[FOR EACH ROW [WHEN (<condicion>)]]
DECLARE
-- variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepcion
END <nombre_trigger>;
El siguiente ejemplo declara y ejecuta utiliza una funcion (fn_multiplica_x2).
DECLARE
idx NUMBER;
...