PL/SQL es un lenguaje basado en SQL, por lo cual, si haz usado anteriormente sentencias DML de SQL(select, insert, update, delete) se te hará sencillo entender PL/SQL.
Bloques de código
PL/SQL extiende SQL al nivel de manejar variables, condiciones, estructuras de control. El código en PL/SQL debe estar dentro de un bloque de código en el cual se especifican las instrucciones o código.
El bloque se define mediante las palabras reservadas BEGIN y END las cuales deben estar en una línea de texto independiente y la palabra END debe finalizar en un ;(punto y coma.). El código debe estar dentro del bloque:
BEGIN DBMS_OUTPUT.PUT_LINE('HOLA MUNDO :P'); END;
En el ejemplo anterior se hace uso de la procedimiento DBMS_OUTPUT.PUT_LINE para imprimir un mensaje de salida. De la misma manera podemos imprimir el resultado de una operación matemática:
BEGIN DBMS_OUTPUT.PUT_LINE(3+5); END;
Realmente es sencillo, pero hasta el momento un poco inútil. Conforme vayas avanzando en el tutorial se irán agregando más cosas.
Variables
Ahora haremos uso de variables en nuestros bloques de código, para declarar una variable debemos adicionar la palabra reservada DECLARE antes de BEGIN. Las variables son declaradas entre DECLARE y BEGIN:
DECLARE mi_variable VARCHAR2(200); BEGIN mi_variable := 'Hola mundo'; DBMS_OUTPUT.PUT_LINE(mi_variable); END;
En el ejemplo anterior hemos declarado la variable mi_variable con el tipo de dato VARCHAR2, lo cual en Oracle corresponde a una variable que almacena texto. Finalmente a mi_variable le asignamos el texto 'Hola mundo' dentro del cuerpo del bloque(línea 4), pero la primera asignación de valor a una variable se puede realizar en la sección DECLARE:
DECLARE mi_variable VARCHAR2(200) := 'Hola mundo'; BEGIN DBMS_OUTPUT.PUT_LINE(mi_variable); END;
En la línea 4 se puede ver que se usa el operador :=(dos puntos y un igual) para asignar el texto 'Hola mundo' a nuestra variable. El operador de asignación sirve para la asignación de constante a variable o de variable a variable.
Tipos de datos
En PL/SQL se pueden utilizar los mismos tipos de datos usados para la declaración de las columnas con la sentencia CREATE TABLE.
Para fines específicos de éste tutorial, sólo se especificarán los tipos de datos que más usaremos.
Numéricos
Tipo | Almacena | Rango |
---|---|---|
PLS_INTEGER | Entero con signo | -2,147,483,648 a 2,147,483,647 |
NATURAL | Entero PLS_INTEGER no negativo | |
NUMBER | Números de coma flotante. Se debe especificar la presición | 1e-130 a 1.0e126 |
Texto
Tipo | Almacena | Rango |
---|---|---|
CHAR | Cadena de texto de tamaño fijo. | 32,767 bytes |
VARCHAR2 | Cadena de texto de tamaño variable. | 32,767 bytes |
NCHAR | Cadena de texto de tamaño fijo. Incluye caracteres UNICODE. | 32,767 bytes |
NVARCHAR2 | Cadena de texto de tamaño variable. Incluye caracteres UNICODE. | 32,767 bytes |
Lógicos
Tipo | Almacena | Rango |
---|---|---|
BOOLEAN | Almacena valores lógicos. Incluye el valor NULO | TRUE, FALSE o NULL |
Fecha y hora
Tipo | Almacena | Rango |
---|---|---|
DATE | Fechas fijas, incluye incluye año, mes, día, horas, minutos y segundos | 01/01/1,4712 BC a 31/12/9999 |
TIMESTAMP | Extiende el tipo DATE, incluye año, mes, día, horas, minutos y segundos fraccionados. | |
TIMESTAMP WITH TIME ZONE | Extiende el tipo de dato TIMESTAMP adicionando una zona horaria |
Conclusiones
El manejo de variables es muy sencillo, aunque el hecho de que deben ser declaradas antes de ser usadas resulte incomo para algunos. Los tipos de datos son muy amplios en Oracle, sólo se han presentado los más utilizados.