Vamos a iniciar un nuevo proyecto en SoyGeek.news, en donde estaremos compartiendo algunas guías básicas y avanzadas referentes al mundo de la programación. Conforme vayamos avanzando sería bueno ir leyendo sus comentarios y sugerencias. Comenzaremos con PL/SQL, el cual puede usar utilizado en la mayoría de bases de datos (BD) relacionales, es particular este se centrara en BDs Oracle.
¿Qué es PL/SQL?
Procedural Lenguaje / Structured Query Language (Lenguaje Procedimental / Lenguaje de Consulta Estructurado) es un lenguaje de programación incrustado en Oracle. Este soporta todas las consultas, ya que la manipulación de datos que usa es la misma que en SQL, incluyendo nuevas características:
- Manejo de variables
- Estructuras modulares
- Estructura modulares
- Estructura de control de flujo y toma de decisiones
- Control de excepciones.
El lenguaje PL/SQL está incorporado en los servidores de la base de datos y en las Herramientas de Oracle como Forms y Reports.
En un entorno de base de datos los programadores pueden construir bloques PL/SQL para utilizarlos como procedimientos o funciones, o bien pueden construir bloques como parte de scripts SQL *Plus.
Tipos de Datos
Para empezar a utilizar PL/SQL, se debe de conocer los tipos de datos soportados por el lenguaje.
Tipo de dato / Sintaxis | Oracle 8i | Oracle 9i | Descripción |
decimal(p, e) | La precisión máxima es de 38 dígitos. | Donde p es la precisión y e la escala. | |
dec(p, e) | Por ejemplo: decimal(3,1) es un número de 3 digitos y solo uno es decimal. | ||
double precision | |||
float | La precisión máxima es de 38 decimales. | ||
int | |||
integer | |||
numeric(p, e) | La precisión máxima es de 38 dígitos. | Donde p es la precisión y e la escala. | |
number(p, e) | Por ejemplo: numeric(7,2) es un número que tiene 5 dígitos antes del decimal y 2 dígitos después del decimal. | ||
real | |||
smallint | |||
char (tamaño) | Hasta 32767 bytes en PLSQL. | Donde tamaño es el número de caracteres a almacenar. Son cadenas de ancho fijo. Se rellena con espacios. | |
Hasta 2000 bytes en Oracle 8i/9i. | |||
varchar2 (tamaño) | Hasta 32767 bytes en PLSQL. | Donde tamaño es el número de caracteres a almacenar. Son cadenas de ancho variable. | |
Hasta 4000 bytes en Oracle 8i/9.i | |||
long | Hasta 2 gigabytes. | Son cadenas de ancho variable. | |
raw | Hasta 32767 bytes en PLSQL. | Son cadenas binarias de ancho variable. | |
Hasta 2000 bytes en Oracle 8i/9i. | |||
long raw | Hasta 2 gigabytes. | Son cadenas binarias de ancho variable. | |
date | Una fecha entre el 1 de enero de 4712 a. C. y el 31 de diciembre de 9999 d. C. | ||
timestamp (fractional seconds precision) | No soportado por Oracle 8i. | fractional seconds precisiondebe ser un número entre 0 y 9. (El valor por defecto es 6) | Incluye año, mes día, hora, minutos y segundos. |
Por ejemplo: timestamp(6) | |||
timestamp (fractional seconds precision) with time zone | No soportado por Oracle 8i. | fractional seconds precisiondebe ser un número entre 0 y 9. (El valor por defecto es 6) | Incluye año, mes día, hora, minutos y segundos; con un valor de desplazamiento de zona horaria. |
Por ejemplo: timestamp(5) with time zone | |||
timestamp (fractional seconds precision) with local time zone | No soportado por Oracle 8i. | fractional seconds precisiondebe ser un número entre 0 y 9. (El valor por defecto es 6) | Incluye año, mes día, hora, minutos y segundos; con una zona horaria expresada como la zona horaria actual. |
Por ejemplo: timestamp(4) with local time zone | |||
interval year (year precision) to month | No soportado por Oracle 8i. | year precision debe ser un número entre 0 y 9. (El valor por defecto es 2) | Período almacenado en años y meses. |
Por ejemplo: interval year(4) to month | |||
interval day (day precision) el bloque en el fichero de la base de datos; | Datos binarios de ancho fijo. Cada registro de la base de datos tiene una dirección física o rowid. | ||
RRRR es la fila del bloque; FFFFF es el fichero de la base de datos. | |||
urowid [tamaño] | Hasta 2000 bytes. | Rowid universal. Donde tamaño es opcional. | |
boolean | Válido en PLSQL, este tipo de datos no existe en Oracle 8i/9i. | ||
nchar (tamaño) | Hasta 32767 bytes en PLSQL. Hasta 2000 bytes en Oracle 8i/9i. | Donde tamaño es el número de caracteres a almacenar. Cadena NLS de ancho fijo. | |
nvarchar2 (tamaño) | Hasta 32767 bytes en PLSQL. Hasta 4000 bytes en Oracle 8i/9i. | Donde tamaño es el número de caracteres a almacenar. Cadena NLS de ancho variable. | |
bfile | Hasta 4 gigabytes. | Localizadores de archivo apuntan a un objeto binario de solo lectura fuera de la base de datos. | |
blob | Hasta 4 gigabytes. | Localizadores LOB apuntan a un gran objeto binario dentro de la base de datos. | |
clob | Hasta 4 gigabytes. | Localizadores LOB apuntan a un gran objeto de caracteres dentro de la base de datos. | |
nclob | Hasta 4 gigabytes. | Localizadores LOB apuntan a un gran objeto NLS de caracteres dentro de la base de datos. |
Es necesario saber el alcance que puede llegar a tener la tabla anterior para hacer una buena implementación de soluciones en base a funciones y procedimientos con fines específicos según la lógica del negocio o necesidades del tratamiento de datos.
Identificadores
Un identificador es un nombre que se le pone a un objeto que interviene en un programa, que puede ser variable, constante, procedimientos, excepciones, cursores… Debe tener un máximo de 30 caracteres que empiece siempre por una letra, y puede contener letras, números, los símbolos $, #, _, y mayúsculas y minúsculas indiferentemente. Los identificadores no pueden ser palab ras reservadas (SELECT, INSERT, DELETE, UPDATE, DROP).