Este un blog que cambio de rumbo... antes era relacionado a "n" temas ahora será exclusivo para detallar todo lo que pude aprender en Oracle =)

sábado, 24 de julio de 2010

DECLARANDO VARIABLES PL/SQL

Las variables pueden ser usadas para almacenar data temporalmente, manipular valores almacenados y reusarlas dentro de los bloques. las variables pueden almacenar cualquier objeto PLSQL, como variables, tipos, cursores y subprogramas(Fx y Px).

Requerimientos para nombrar variables:
- Debe iniciar con una letra.
- Puede incluir letras y números
- Puede incluir caracteres especiales ($, _ y #)
- No puede ser mayor a 30 caracteres.
- No debe incluir palabras reservadas.

Como manejamos las variables en PLSQL?
- Las variables se deben declarar en la sección declarative, puedes declarar una variable asignando un valor inicial y se puede ademas colocar el constraint de NOT NULL .
- se usan y asignan nuevos valores en la sección ejecutable.
-Las variables se utilizan para pasar los parametros a un subprograma(Fx o Px) y ademá sirven para almacenar las respuesta de estos subprogramas.

Sintaxis:
nombre_variable [constant] tipo_dato [not null] [:= valor_default];

Ejemplo:
v_contador number(2) not null := 0;

Otros parametros de la declaración de variables:
CONSTANT: el valor de la variable no puede cambiar.
NOT NULL: es un constraint que indica que la variable debe tener un valor.
DEFAULT : es otra manera de dar un valor por defctoa una variable ( es igual a :=)

En Oracle al imprimir textos literales que contienen el caracter de comilla simple (') se presentan algunos incovenientes lanzandonos un error (ORA-01756: la cadena entrecomillada no está terminada correctamente) , por lo cual oracle permite solucionar esto utilizando :

1. Dobles comillas como se muestra en el siguiente ejemplo:

Select 'Fathers''day'from dual;

y 2. es utilizar "Q o q" con un rango de delimitadores que indica que todo texto que se encuentre dentro de los delimitadores se considera texto literal , por ejemplo:

select q'[father's day ]' from dual;

Ambos ejemplos dan como resultado : Father's day sin ningún error en nuestra consola SQL*PLUS o la herramienta que utilices.


TIPOS DE VARIABLES:

1. Variables PLSQL, pueden ser:

1.1Escalares, almacenan un solo valor y no tienen componentes internos (puede sre un valor booleano). Pueden ser de tipo:

- Char, varchar2, number(p,s), binary_integer, pls_integer, boolean, binary_float, binary_double.
- Date, timestamp, timestamp with time zone, timestamp with local time zone, interval year to month, interval year to second.

*number(p,s): p , puede tomar valores d 1 hasta 38 y s, puede tomar valores de -84 hasta 127.
*pls_integer: requiere menos almacenamiento y es más rápido que los tipo de datos NUMBER
*boolean, almacena tipos de datos :false, true y null. puede utilizar operadores and, or y not .
*timestamp: almacena año, mes, día, hora, minutos , segundos y fracciones d segundos , la precisión de los segundos se encuentra en 6 seg. por default, pero puede ir desde 0 hasta 9 .[timestamp(x)]

Ejemplo:

DECLARE
v_emp_job varchar(100);

1.2.Compuestas, tambien llamada coleccionts, pueden almacenar datos de tipo RECORD , TABLE, NESTED TABLE y VARRAY .
1.3.Referidas, son llamados pointers (punteros) , por que apuntan hacia una localización de almacenamiento.
1.4Large Object (LOB), almacena valores de tipos de datos LOB (CLOB, BLOLB, BFILE y NCLOB), son llamados locators(localizadores), por que especifican la localiación de LOBS que son almacenados fuera de las tablas.

2. Variables NO PLSQL o Bind Variables or Host variables
son creadas en un ambiente diferente a la sección DECLARE de un bloque pl/sql, son creadas con la palabra VARIABLE, son usadas en sentencias sql y PL/SQL . Pueden ser consutadas aun cuando el bloque PL/SQL ya se ejecutó.
Cuando declaras una bind variable number , no puedes indicar la precisión. Para coloarla dentro de un bloque plsql debes colocar :NOMBRE_VARIABLE

sintaxis:
VARIABLE nombre_variable number

sintaxis para imprimir una bind variable:
VARIABLE v_dato number
begin
select salary into :v_dato from employees where employee_id='8';
end;
/
print v_dato

Se puede utilizar:
SET AUTOPRINT ON, Para mostrar automaticamente el valor de la bind variable.

Como declarar variables??
- Cuando declaras una variable PL/SQL debemos evitar colocar el mismo nombre de la columna a la cual hacemos referencia .
- Cuando a una variable no se coloca un valor por defecto , este toma el valor de null.
- Dos variables pueden tener el mismo nombre sólo si son definidos en bloques diferentes.
- Si en la declaración de la variable has colocado al opción de NOT NULL, necesariamente debe tener un valor por default en la declaración.

Declarar variables utilizando el atributo %TYPE
Lo usamos para declarar una variable de cuerdo a una columna definida en la BD o otro variable declarada.
Para declarar un variable con atributo %type , se debe anteponer el nombre de la tabla de la base de datos y el nombre de la columna o el nombre de la variable declarada.
No es aplicable utilizar constraint NOT NULL para variables que utilizan %type

sintaxis:
nombre_variable table.column_name%type;
nombre_variable nombre_variable%type;

No hay comentarios.: