Fundamentos del lenguaje PL/SQL

21 de abril de 2009
Valoración del artículo:
En este artículo estudiaremos los fundamentos de PL/SQL y algunos de los elementos que constituyen este lenguaje.
Para continuar con el manual de Oracle publicado en DesarrolloWeb.com, es hora de adentrarnos en las explicaciones de los elementos que forman parte del lenguaje PL/SQL.

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.
Además es importante señalar que el programador puede definir sus propios tipos de datos a partir de los ya definidos.

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ógicosAND
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:
  1. 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.
  2. 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)

Comentarios
Fueron enviados 2 comentarios al artículo
1 comentario no revisado
1 comentario revisado:

alberto...
Visibilidad variables de un paquete
29/9/2011
Si actualizo una variable de paquete (global para todas las funciones del paquete), puede darse el caso de que dos usuarios del mismo paquete, en llamadas paralelas del paquete vean datos inconsistentes de dichas variables? O cada usuario mantiene un "hilo de ejecución" del paquete diferenciado que mantiene una copia "local" de las variables del paquete para que no se "mezclen" con las de otros usuarios simultáneos del paquete?

Manuales relacionados
Categorias relacionadas
El autor
Sara Alvarez
Equipo DesarrolloWeb.com
http://www.desarrolloweb.com


Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...