Pl Sql
Bases de Datos E.U.I.T.I.O
Características
Algunas características del lenguaje:
No es sensible a mayúsculas/minúsculas Comentarios hasta fin de línea: -Comentarios multilínea: /*… … … */ Literales de cadena se especifican entre comillas simples ’esto es una cadena’ Literales de caracter se especifican entre comillas simples ’c’ Fechas se especifican entre comillas simplessiguiendo el formato por defecto del sistema o indicando el formato ’17/11/2008’
Bases de Datos
2
Luis Vinuesa Belén Martínez
1
Bloque (Anónimo)
DECLARE Declaración de Variables; BEGIN Sentencias Ejecutables; [EXCEPTION Declaración de Excepciones;] END;
Bases de Datos
3
Luis Vinuesa Belén Martínez
Subprogramas
Son bloques PL/SQL con un nombre
Pueden recibir parámetros y serdirectamente invocados Puede haber varios con el mismo nombre siempre y cuando tengan distinto tipo/número de parámetros
Tipos
Procedimientos (PROCEDURE) -> Llevan a cabo acciones Funciones (FUNCTION) -> Devuelven valores
Invocación
Desde otro subprograma Desde aplicaciones Desde SQL+ (EXECUTE)
Bases de Datos
4
Luis Vinuesa Belén Martínez
2
Subprogramas - Parámetros
Lossubprogramas pueden recibir y devolver parámetros:
Parámetros de entrada (IN), se recibe un valor. Es la opción por defecto Parámetros de salida (OUT), se devuelve un valor Parámetros de entrada y salida (IN OUT), se recibe un valor y se puede devolver un valor
Los parámetros pueden tener valor por defecto, de tal manera que en la invocación al subprograma no sea necesario pasar el parámetroLuis Vinuesa
Bases de Datos
5
Belén Martínez
Subprogramas - Parámetros
Ejemplos:
Subpro1(a NUMBER);--equivalente a subpro1(a IN NUMBER) Subpro2(a IN NUMBER:=1);--si no se le pasa toma 1 Subpro2(a IN NUMBER DEFAULT 1);--igual al anterior Subpro3(a OUT DATE);--devuelve una fecha Subpro4(a IN OUT NUMBER);--recibe y devuelve valor Subpro5(a IN NUMBER, b IN NUMBER :=4);/*se le puede invocarsubpro5(33); subpro5(33,6); */ Subpro6(a IN NUMBER, b OUT VARCHAR2);/*en los varchar2 no se indica el tamaño*/
Luis Vinuesa Belén Martínez
Bases de Datos
6
3
Procedimientos
Sintaxis
CREATE [OR REPLACE] PROCEDURE [esquema.]nombre
[(argumento1 [{IN|OUT|IN OUT}] tipo_dato [{:=|DEFAULT} valor], ........ argumenton [{IN|OUT|IN OUT}] tipo_dato [{:=|DEFAULT} valor])] {IS|AS} cuerpo deprocedimiento
Bases de Datos
7
Luis Vinuesa Belén Martínez
Procedimientos
Estructura
CREATE OR REPLACE PROCEDURE nombre IS /*sección declarativa*/ BEGIN /*sección ejecutable*/ EXCEPTION /*sección de excepciones*/ END [nombre];
Bases de Datos
8
Luis Vinuesa Belén Martínez
4
Procedimientos
Ejemplo
CREATE OR REPLACE PROCEDURE ejemplo (p_departamento NUMBER, p_emptemp.empno%TYPE, p_accion NUMBER(1) DEFAULT 1) IS v_aux NUMBER; v_nuevo_dep tdept.deptno%TYPE; BEGIN ....... EXCEPTION WHEN ..... END ejemplo;
Bases de Datos
9
Luis Vinuesa Belén Martínez
Funciones
Sintaxis
CREATE [OR REPLACE] FUNCTION [esquema.]nombre
[(argumento1 [{IN|OUT|IN OUT}] tipo_dato [{:=|DEFAULT} valor], ........ argumenton [{IN|OUT|IN OUT}] tipo_dato [{:=|DEFAULT} valor])]RETURN tipo_dato_retorno {IS|AS} cuerpo de función
Bases de Datos
10
Luis Vinuesa Belén Martínez
5
Funciones
En el cuerpo de la función es necesario que se use la orden RETURN para devolver el valor de retorno de la función (También se puede usar en procedures sin ningún parámetro y sirve para provocar la salida inmediata del mismo)
Bases de Datos
11
Luis Vinuesa BelénMartínez
Funciones
Ejemplo
CREATE OR REPLACE FUNCTION calcula (p_dni tpersona%TYPE, p_sal OUT NUMBER) RETURN NUMBER IS v_porcen NUMBER(3,2); BEGIN ....... IF v_porcen>0.25 THEN RETURN 1; ELSE RETURN 2; END IF; END calcula;
Bases de Datos
12
Luis Vinuesa Belén Martínez
6
Subprogramas
Manejo de excepciones
RAISE (para excepciones predefinidas o definidas por el usuario)...
Regístrate para leer el documento completo.