PL/SQL Flashcards
Definir identificador x*!
“x*!”
Literal cadena x
‘x’
Comentario x de una linea
–x
Comentario x de varias lineas
/* x */
Tipo de dato racional
NUMBER
Tipo de dato integer para operaciones rapidas
PLS_INTEGER
Tipo de dato array de n char
CHAR(n)
Tipo de dato array de char grande
LONG
Tipo de dato array de bytes pequeño
RAW
Tipo de dato array de bytes grande
LONG RAW
Tipo de dato cadena de longitud variable
VARCHAR2
Tipo de dato puntero a fichero
BFILE
Tipo de dato objeto binario 4gb
BLOB
Tipo de dato objeto caracter 2gb
CLOB
Tipo de dato booleano
BOOLEAN
Tipo de dato fecha
DATE
Crear subtipo de dato x a partir de y
SUBTYPE x IS y;
Obtener tipo de dato de columna x de tabla y
y.x%TYPE
Obtener tipo de dato de cursor o table x
x%ROWTYPE
Crear subtipo de dato x a partir de tipo restringido y(n) auxiliar z
z y(n); SUBTYPE x IS z%TYPE;
Crear variable x tipo de dato constante y asignar valor n
x CONSTANT y := n;
Crear variable x tipo de dato y no nulo y asignar valor n
x y NOT NULL := n;
Bloque estandar PL/SQL
DECLARE -> (...) BEGIN -> (...) EXCEPTION -> (...) END;
Si se cumple condicion x se ejecuta codigo y
IF (x) THEN
-> y
END IF;
Si se cumple condicion x se ejecuta codigo y, sino se ejecuta codigo z
IF (x) THEN -> y ELSE -> z END IF;
Si se cumple condicion x se ejecuta codigo y, sino si se cumple condicion z se ejecuta codigo w, sino se ejecuta codigo u
IF (x) THEN -> y ELSIF (z) THEN -> w ELSE -> u END IF;
Crear bucle infinito que ejecute codigo x
LOOP
-> x
END LOOP;
Crear bucle con salida tras codigo x
LOOP
-> x
-> EXIT;
END LOOP;
Crear bucle con salida con condicion x que ejecute codigo y
LOOP
-> y
-> EXIT WHEN (x);
END LOOP;
Crear bucle que ejecute codigo x mientras se cumpla condicion y
WHILE (y) LOOP
-> x
END LOOP;
Crear bucle iterando contador i en un rango n m que ejecute codigo x
FOR i IN n..m LOOP
-> x
END LOOP;
Crear bucle iterando contador i al reves en un rango n m que ejecute codigo x
FOR i IN REVERSE n..m LOOP
-> x
END LOOP;
Capturar excepcion x y manejarla con codigo y, otras excepciones manejarlas con codigo z
WHEN x THEN
-> y
WHEN OTHERS THEN
-> z
Declarar una excepcion x
DECLARE
-> x EXCEPTION;
Lanzar excepcion x
RAISE x;
Comando para lanzar mensajes de excepcion
RAISE_APPLICATION_ERROR(?)
Asignar excepcion x a codigo de excepcion predeterminado y
PRAGMA_INIT(x, y);
Crear tipo complejo registro x con campos y z
TYPE x IS RECORD (y, z);
Declarar variable campo x a partir de campo y tipo de dato z valor w
x := y z := w;
Acceder a campo x de variable y tipo complejo registro
y.x
Crear tipo complejo array de longitud variable x de tamaño maximo n de tipos y
TYPE x IS VARRAY (n) OF y;
Inicializar varray x tipo varray y con constructor vacío
x y := y();
Acceder a elemento n de varray x
x(n)
Extender en n elementos x longitud del varray o tabla y
y.EXTEND(n, x);
Obtener numero de elementos del varray o tabla x
x.COUNT
Obtener tamaño maximo del varray x
x.LIMIT
Crear tipo complejo tabla anidada x de tipos y
TYPE x IS TABLE OF y [NOT NULL];
Obtener booleano si elemento x de tabla anidada y existe
y.EXISTS(n)
Borrar n elementos al final de una tabla anidada x
x.TRIM(n)
Borrar elemento del n al m de una tabla anidada x
x.DELETE(n, m)
Cuando un cursor se declara implicito
cuando una consulta SQL solo devuelve 1 fila (y para cada sentencia DML SQL)
Devoluciones de cursor x%ISOPEN
TRUE despues de OPEN antes de CLOSE
FALSE en cualquier otra situacion
Devoluciones de cursor x%FOUND
NULL antes del primer FETCH
TRUE despues de primer FETCH antes del ultimo FETCH
FALSE despues del ultimo FETCH
Exception si %ISOPEN es FALSE
Devoluciones de cursor x%NOTFOUND
NULL antes del primer FETCH
FALSE despues de primer FETCH antes del ultimo FETCH
TRUE despues del ultimo FETCH
Exception si %ISOPEN es FALSE
Devoluciones de cursor x%ROWCOUNT
0 antes del primer FETCH
1 despues de primer FETCH antes de los siguientes FETCH
Exception si %ISOPEN es FALSE
Depende de datos las demas situaciones
Declarar cursor explicito x, parametro a tipo y = n por defecto, devuelve tipo fila de la tabla z, con consulta w
CURSOR x (a y DEFAULT n) RETURN z%ROWTYPE IS w;
Abrir cursor x, parametro n
OPEN x (n);
Obtener siguiente fila del conjunto resultado del cursor x en las variables a b c d
FETCH x INTO a, b, c, d;
Cerrar cursor x
CLOSE x;
Recorrer cursor x con bucles para cursores
FOR x_rec IN x LOOP
–procesar las filas accediendo a x_rec.y …
END LOOP;
Definir disparador/trigger x momento y acontecimiento z, de la tabla w
CREATE TRIGGER x
y z ON w
FOR EACH ROW
[bloque_PL/SQL];
Tipos de momentos en disparadores
BEFORE
AFTER
Tipos de acontecimientos en disparadores
INSERT
DELETE
UPDATE
Definir disparador/trigger x momento y acontecimiento z, de la tabla w, disparadores para filas con alias, con condicion u
CREATE TRIGGER x y z ON w REFERENCING (old AS alias_old | new AS alias_new) FOR EACH ROW WHEN u [bloque_PL/SQL];
Declarar subprograma funcion x, con parametro a tipo y, que devuelve tipo de dato z, declaraciones locales w
FUNCTION x (a y) RETURN z IS w BEGIN [...] END [x];
Declarar subprograma procedimiento x, con parametro a tipo y, declaraciones locales z
PROCEDURE x (a y) IS z BEGIN [...] END [x];
Almacenar subprograma x en base de datos
CREATE OR REPLACE
(x…)
/
Llamar a subprograma x con parametro a
x(a)
Crear paquete x
CREATE PACKAGE x AS -> declaraciones publicas, especificacion subprogramas END x; CREATE PACKAGE BODY x AS -> declaraciones privadas, cuerpo subprogramas BEGIN -> sentencias inicializacion END x;
Llamar a subprograma x con parametro a del paquete y
y.x(a)
Declarar objeto x con parametros y tipo z, parametro w tipo u
CREATE OBJECT x AS OBJECT (
-> y z,
-> w u,
);
Crear clase de objeto x con parametros y tipo z, funcion miembro w que devuelve tipo u
CREATE TYPE x AS OBJECT ( -> y z, -> MEMBER FUNCTION w RETURN u, ); CREATE TYPE BODY x AS -> MEMBER FUNCTION w RETURN u IS -> BEGIN -> -> (sentencias + RETURN); -> END; END;
Crear funcion miembro mapa x que devuelva tipo y
MAP MEMBER FUNCTION x RETURN y
Crear funcion miembro orden x, con parametro y tipo objeto z
ORDER MEMBER FUNCTION x (y z) RETURN INTEGER
y IN z?
Eliminar tipo de objeto (clase) x
DROP TYPE x;
Eliminar atributo x de clase y
ALTER TYPE y DROP ATTRIBUTE x;
Añadir a la clase x, atributo y tipo z, atributo w tipo u
ALTER TYPE x ADD ATTRIBUTE (y z, w u);
Modificar atributo x a tipo y, de la clase z
ALTER TYPE z MODIFY ATTRIBUTE x y;
Asignar valor de variable x a atributo x del propio objeto instanciado
SELF.x := x;
Constructor x con parametros y z, u w
CONSTRUCTOR FUNCTION x(y z, u w)
-> RETURN SELF AS RESULT
Declarar variable x de objeto y, construirlo con argumentos z w
x y := NEW Y(z, w);
Declarar procedimiento x con parametro y tipo objeto z
PROCEDURE x (y IN z)
Acceder a atributo x del objeto y
y.x
Llamar a metodo x del objeto y con argumentos z w
y.x(z, w);
Llamar a metodo estatico x del tipo de objeto y
y.x();
Crear tipo de objeto x heredado de tipo de objeto y
CREATE TYPE x AS OBJECT UNDER y (
-> (…)
);
Crear tipo de objeto x del cual se hereda
CREATE TYPE x AS OBJECT (
-> (…)
) NOT FINAL;
Crear tipo complejo tabla anidada x de tamaño maximo n de tipos y
TYPE x IS TABLE OF y;
Crear tabla de objetos x de tipo de objeto y
CREATE TABLE x OF y;