Implementación de reglas de construcción en PL/SQL
- Área: Especificaciones de Codificación y Construcción
- Carácter del recurso: Recomendado
- Tecnologías: PL/SQL
Descripción
A continuación se muestran ejemplos que implementan las reglas de construcción para PL/SQL
Ejemplos
%TYPE y %ROWTYPE
%TYPE se usa para declarar una variable que tendrá el mismo tipo que una columna de una tabla.
%ROWTYPE se usa para declarar un registro con los mismos tipos de la tabla, vista o cursor de la base de datos.
DECLARE
v_EmpName emp.ename%TYPE;
BEGIN
SELECT ename INTO v_EmpName FROM emp WHERE ROWNUM = 1;
DBMS_OUTPUT.PUT_LINE('Name = '|| v_EmpName);
END;
DECLARE
v_emp emp%ROWTYPE;
BEGIN
v_emp.empno :=10;
v_emp.ename :='XXXXXXX';
END;
SUBTYPE
Se usan para declarar un nuevo tipo de datos personalizado a partir de un tipo disponible en la base de datos
Sintaxis: SUBTYPE <nombre_subtipo> IS <tipo_base> [(constraint)] [NOT NULL];
-- tipo_base puede se un tipo de dato predefinido, un subtipo, una variable %TYPE o %ROWTYPE.
Uso: -- El bloque PL/SQL que se muestra a continuación declara un subtipo HIREDATE, del tipo DATE, que no
-- puede ser nulo. Posteriormente se crea una variable, PFDATE, de tipo HIREDATE y se inicializa con la
-- fecha del sistema.
DECLARE
SUBTYPE HIREDATE IS DATE NOT NULL;
PFDATE HIREDATE := SISDATE;
DEGIN
DBMS_OUTPUT.PUT_LINE(PFDATE);
END;
CONSTANT
Es una variable que se define y se declara una vez, y que no cambia en tiempo de ejecución
Sintaxis:
constant_name CONSTANT datatype [NOT NULL] { := | DEFAULT } expression;
Uso:
C_WIDTH CONSTANT numeric(8,1) := 25.1;
Inicialización de variables complejas
Las variables complejas se inician en la sección ejecutable para que los errores que se puedan producir en su inicialización puedan ser capturados y tratados
CREATE OR REPLACE PROCEDURE find_bestsellers
IS
l_last_title book.title%TYPE;
l_min_count INTEGER(3);
PROCEDURE init IS
BEGIN
l_last_title:= last_search (SYSDATE);
l_min_count:=
bestseller.limits (bestseller.low);
EXCEPTION
-- Captura y maneja todos los errores
-- dentro del programa
END;
BEGIN
init;
Expresiones lógicas y funciones
Las variables lógicas y las funciones permiten enmascarar expresiones complejas, facilitando la comprensión del código.
El siguiente código:
IF total_sal BETWEEN 10000 AND 50000 AND emp_status (emp_rec.empno) = 'N' AND (MONTHS_BETWEEN (emp_rec.hiredate, SYSDATE) > 10) THEN give_raise (emp_rec.empno); END IF;
es más dificil de comprender que:
IF eligible_for_raise (totsal, emp_rec) THEN give_raise (emp_rec.empno); END IF;
Centralización de definiciones TYPE en paquetes específicos
En PL/SQL, usted definirá muchos TIPOS (TYPE) de cosas, incluyendo:
- Los subtipos que definen tipos de datos de aplicación específicos.
- Tipos de colección, como las listas de números, fechas, o registros.
- Tipos de cursor referidos, por lo cuál, son declaradas las variables de cursor. Algunos de estos tipos pueden ser usados sin sufrir modificaciones.
En uno u otro caso, la creación de un paquete permite que estos tipos puedan ser reutilizados en múltiples programas.
CREATE OR REPLACE PACKAGE colltype IS TYPE boolean_ntab IS TABLE OF BOOLEAN; TYPE boolean_ibtab IS TABLE OF BOOLEAN INDEX BY BINARY_INTEGER; TYPE date_ntab IS TABLE OF DATE; TYPE date_ibtab IS TABLE OF DATE INDEX BY BINARY_INTEGER; ... END colltype;
Contenidos relacionados
Código | Título | Tipo | Carácter | |
---|---|---|---|---|
LIBP-0014 | Reglas de construcción en PL/SQL | Libro de pautas | Directriz | Obligatoria |
Código | Título | Tipo | Carácter |
---|---|---|---|
RECU-0107 | Manual de desarrollo en PL/SQL | Manual | Recomendado |