En este artículo estudiaremos los fundamentos de PL/SQL y algunos de los elementos que constituyen este lenguaje.
Tipos de datos
Este lenguaje dispone de los mismo tipos de datos que podemos encontrar en SQL, pero además se han incorporado algunos nuevos:- char(n): almacena una cantidad fija de caracteres
- varchar2(n): almacena cadenas de caracteres de longitudes variables
- long(n): almacena cadenas de longitud variable
- number(p,e): almacena numero de precisión p y escala e
- boolean: almacena valores lógicos, true, false o NULL
- date: almacena fechas completas, incluida la hora
- raw(n): almacena datos binarios de longitud fija
- long raw : almacena datos binarios de longitud variable
- rowid: almacena identificadores de direcciones de fila
- etc.
Identificadores
Se utilizan para nombrar los objetos que intervienen en los programas PL/SQL como son las variables, constantes, cursores, excepciones, procedimientos, etc.Pueden tener como máximo 30 caracteres empezando siempre por una letra, que puede ir seguida por otras letras, numeros, $, # ó _. Es importante destacar que PL/SQL no diferencia entre mayúsculas y minúsculas. También debemos señalar que no pueden contener espacios ni signos de puntuación.
Variables
Como doy por sentado que todos sabemos lo que son las variables, pasaremos directamente a comentar como se declara una variable en PL/SQL.<nombreVariable> <tipo> [NOT NULL] [{:= | DEFAULT } <valor>]
No podemos indicar una lista de variables del mismo tipo y luego declarar el tipo, tenemos que hacerlo una a una.
Uno ejemplo de declaración de variables seria el siguiente:
DECLARE
importe NUMBER (8,2);
contador NUMBER(2'0);
nombre char(5) NOT NULL :="Sara";
...
Uso de los atributos %TYPE y %ROWTYPE
%TYPE: declara una variable del mismo tipo que otra, o que una columna de una tabla
%ROWTYPE : crea una variable registro cuyos campos se corresponden con las columnas de una tabla o vista.
Por ejemplo si tenemos una variable definida previamente llamada cantidad podemos definir otra de la siguiente forma:
total cantidad%TYPE;
De esta forma la variable total tendrá las mismas características que la variable cantidad.
Otro ejemplo seria declarar una variable que fuera del mismo tipo que la columna nombre de la tabla profesor.
nombre_alta nombre%ROWTYPE;
Ámbito y visibilidad de variables
La variable será local para el bloque en el que ha sido declarada y global para los bloque hijos de éste, mientras que las variables declaradas en los bloque hijos no son globales a los bloques padre.
Constantes
Cómo en la mayoría de los lenguajes, en este también podemos declaras constantes, de la siguiente forma:<nombreVariable> CONSTANT <tipo> := <valor>;
Operadores
Asignación | := |
Lógicos | AND OR NOT |
Concatenación | || |
Comparación |
Is null
= != <> < > <= >= between...and like in y sus correspondientes negaciones |
Aritméticos | + - * / ** |
Funciones predefinidas
En PL/SQL tenemos las mismas funciones predefinidas que en SQL (AVG, MIN, MAX, COUNT, SUM, etc), pero tenemos que tener dos cosas muy claras a la hora de utilizarlas y son:- La función no modifica el valor de las variables o expresiones que se pasan como argumentos, sino que devuelve un valor a partir de dicho argumento.
- Si a una función se le pasa un valor nulo en la llamada, posiblemente devolverá un valor nulo.
Etiquetas
Podemos utilizar etiquetas para poder irnos a cualquier parte del programa utilizando la sentencia GOTO siempre y cuando se cumplan las siguientes reglas:No pueden haber etiquetas con los mismos nombres en un mismo programa.
La etiqueta debe preceder a un bloque o a un conjunto de ordenes ejecutables
la etiqueta no puede estar dentro de estructuras de control (IF, LOOP)