8
Copyright © 2008, Oracle. All rights reserved. I - 1 STORE PROCEDURE Lic. Vladimir Cotaquispe Gutierrez

Store procedure

Embed Size (px)

Citation preview

Page 1: Store procedure

Copyright © 2008, Oracle. All rights reserved.I - 1

STORE PROCEDURE

Lic. Vladimir Cotaquispe Gutierrez

Page 2: Store procedure

Copyright © 2008, Oracle. All rights reserved.I - 2

INTRODUCCIÓN

Un procedimiento es un subprograma que ejecuta una acción especifica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.

CREATE [OR REPLACE] PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT] <type>, <param2> [IN|OUT|IN OUT] <type>, ...)] IS -- Declaracion de variables localesBEGIN  -- Sentencias[EXCEPTION]  -- Sentencias control de excepcionEND [<procedure_name>];

Page 3: Store procedure

Copyright © 2008, Oracle. All rights reserved.I - 3

El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el procedimiento existe, se producirá, un error.

    La sintaxis es muy parecida a la de un bloque anónimo, salvo porque se reemplaza la seccion DECLARE por la secuencia PROCEDURE ... IS en la especificación del procedimiento.

    Debemos especificar el tipo de datos de cada parámetro. Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo.

    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.

Page 4: Store procedure

Copyright © 2008, Oracle. All rights reserved.I - 4

CREATE OR REPLACE PROCEDURE Actualiza_Saldo(cuenta NUMBER, new_saldo NUMBER)IS -- Declaracion de variables localesBEGIN  -- Sentencias UPDATE SALDOS_CUENTAS

SET SALDO = new_saldo, FX_ACTUALIZACION = SYSDATE WHERE CO_CUENTA = cuenta;

END Actualiza_Saldo;

Page 5: Store procedure

Copyright © 2008, Oracle. All rights reserved.I - 5

CREATE OR REPLACE PROCEDURE Actualiza_Saldo(cuenta NUMBER, new_saldo NUMBER DEFAULT 10 )IS -- Declaracion de variables localesBEGIN  -- Sentencias UPDATE SALDOS_CUENTAS

SET SALDO = new_saldo, FX_ACTUALIZACION = SYSDATE WHERE CO_CUENTA = cuenta;

END Actualiza_Saldo;

Page 6: Store procedure

Copyright © 2008, Oracle. All rights reserved.I - 6

Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo. Si el sistema nos indica que el procedimiento se ha creado con errores de compilación podemos ver estos errores de compilacion con la orden SHOW ERRORS en SQL *Plus.

    Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de ejecutarlo (en realidad es válido para cualquier subprograma). Estas son:

Page 7: Store procedure

Copyright © 2008, Oracle. All rights reserved.I - 7

Notación posicional:

Se pasan los valores de los parámetros en el mismo orden en que el procedure los define.

BEGINActualiza_Saldo(200501,2500);

COMMIT;

END;

Page 8: Store procedure

Copyright © 2008, Oracle. All rights reserved.I - 8

Notación nominal:

Se pasan los valores en cualquier orden nombrando explicitamente el parámetro.

BEGINActualiza_Saldo(cuenta => 200501,new_saldo =>

2500); COMMIT;

END;