Está en la página 1de 9

Sistema de informacin: puede definirse como un conjunto de componentes

interrelacionados que permiten capturar, procesar, almacenar y distribuir la informacin


para apoyar la toma de decisiones y el control en una institucin.
Los sistemas de informacin sirven para:
Un acceso rpido a determinada informacin y por ende mejora tanto en tiempos
como en resultados el servicio a los usuarios.
Motivar a todo tipo de funcionario de las compaas para requerimientos de cualquier
ndole con excelentes resultados.
Generar informacin e indicadores los cuales permiten analizar, comparar estudiar
para detectar fallas y as mismo tener el control del sistema.
Da la posibilidad de planear, idear proyectos los cuales van a estar generados de un
sistema de informacin que tiene unos elementos claros y en dado caso sustentados para
prever cualquier tipo de requerimientos.
Evita la prdida de tiempo en la organizacin de la informacin ya que realizndola de
forma manual se corre el riesgo de no dar la investigacin correcta.
Hay mayor inters en la creacin de nuevos procesos de trabajo debido a la facilidad
que brinda para la obtencin y el procesamiento de informacin.
Se hace ms efectiva la comunicacin entre procesos y por lo tanto entre grupos de
trabajo, una comunicacin de diferentes instancias con los mismos resultados giles y
confiables.
Organizacin de archivo automatizado, clasificado de inters general y particular,
entre otras.
Un sistema de informacin es tan importante que adems de llevar un control adecuado de
todas las operaciones que all se registren, conlleva a buen funcionamiento de cualquier
proceso y por ende de una entidad por lo que genera buenos beneficios tanto para la
empresa como para sus usuarios, sean estos internos o externos.

PL/SQL es un lenguaje estructurado con bloques. Un bloque PL/SQL es definido por las
palabras clave DECLARE, BEGIN, EXCEPTION, y END, que dividen el bloque en tres
secciones

1. Declarativa: sentencias que declaran variables, constantes y otros elementos de cdigo,


que despus pueden ser usados dentro del bloque
2. Ejecutable: sentencias que se ejecutan cuando se ejecuta el bloque
3. Manejo de excepciones: una seccin especialmente estructurada para atrapar y manejar
cualquier excepcin que se produzca durante la ejecucin de la seccin ejecutable
Slo la seccin ejecutable es obligatoria. No es necesario que usted declare nada en un
bloque, ni que maneje las excepciones que se puedan lanzar.
Un bloque es en s mismo una sentencia ejecutable, por lo que se pueden anidar los bloques
unos dentro de otros.
Aqu hay algunos ejemplos:
El clsico Hola Mundo! es un bloque con una seccin ejecutable que llama al
procedimiento DBMS_OUTPUT.PUT_LINE para mostrar texto en pantalla:
BEGIN
DBMS_OUTPUT.put_line('Hola Mundo!');
END;

Las funciones y procedimientos tipos de bloques con un nombre son discutidos con
mayor detalle ms adelante en este artculo, as como los paquetes. En pocas palabras, sin
embargo, un paquete es un contenedor de mltiples funciones y procedimientos. Oracle
extiende PL/SQL con muchos paquetes incorporados en el lenguaje.
El siguiente bloque declara una variable de tipo VARCHAR2 (un string) con un largo
mximo de 100 bytes para contener el string Hola Mundo!. Despus, el procedimiento
DBMS_OUTPUT.PUT_LINE acepta la variable, en lugar del literal, para desplegarlo:
DECLARE
l_mensaje VARCHAR2(100) := 'Hola Mundo!';
BEGIN
DBMS_OUTPUT.put_line(l_mensaje);
END;

Note que he llamado a la variable l_mensaje. Normalmente uso el prefijo l_ para variables
locales variables definidas dentro del cdigo de un bloque y el prefijo g_ para
variables globales definidas en un paquete.
El siguiente ejemplo de bloque agrega una seccin de manejo de excepciones que atrapa
cualquier excepcin (WHEN OTHERS) que pueda ser lanzada y muestra el mensaje de
error, que es retornado por la funcin SQLERRM (provista por Oracle).
DECLARE
l_mensaje VARCHAR2(100) := 'Hola Mundo!';
BEGIN

DBMS_OUTPUT.put_line(l_mensaje);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line(SQLERRM);
END;

El siguiente ejemplo de bloque demuestra la habilidad de PL/SQL de anidar bloques dentro


de bloques as como el uso del operador de concatenacin (||) para unir mltiples strings.
DECLARE
l_mensaje VARCHAR2(100) := 'Hola';
BEGIN
DECLARE
l_mensaje2 VARCHAR2(100) := l_mensaje || ' Mundo!';
BEGIN
DBMS_OUTPUT.put_line(l_mensaje2);
END;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);
END;

Bloques PL/SQL
Un programa de PL/SQL est compuesto por bloques. Un programa est compuesto como
mnimo de un bloque.
Los bloques de PL/SQL pueden ser de los siguientes tipos:

Bloques annimos

Subprogramas

Estructura de un Bloque
Los bloques PL/SQL presentan una estructura especfica compuesta de tres partes bien
diferenciadas:

La seccin declarativa en donde se declaran todas las constantes y variables que se


van a utilizar en la ejecucin del bloque.

La seccin de ejecucin que incluye las instrucciones a ejecutar en el bloque


PL/SQL.

La seccin de excepciones en donde se definen los manejadores de errores que


soportar el bloque PL/SQL.

Cada una de las partes anteriores se delimita por una palabra reservada, de modo que un
bloque PL/SQL se puede representar como sigue:
[ declare | is | as ]
/*Parte declarativa*/
begin

/*Parte de ejecucion*/
[ exception ]
/*Parte de excepciones*/
end;

De las anteriores partes, nicamente la seccin de ejecucin es obligatoria, que quedara


delimitada entre las clusulas BEGIN y END. Veamos un ejemplo de bloque PL/SQL muy
genrico. Se trata de un bloque annimos, es decir no lo identifica ningn nombre. Los
bloques annimos identifican su parte declarativa con la palabra reservada DECLARE.
DECLARE
BEGIN

/*Parte declarativa*/
nombre_variable DATE;
/*Parte de ejecucion
* Este cdigo asigna el valor de la columna "nombre_columna"
* a la variable identificada por "nombre_variable"
*/
SELECT SYSDATE
INTO nombre_variable
FROM DUAL;

EXCEPTION
/*Parte de excepciones*/
WHEN OTHERS THEN
dbms_output.put_line('Se ha producido un error');
END;

A continuacin vamos a ver cada una de estas secciones


Seccin de Declaracin de Variables
En esta parte se declaran las variables que va a necesitar nuestro programa. Una variable
se declara asignandole un nombre o "identificador" seguido del tipo de valor que puede
contener. Tambin se declaran cursores, de gran utilidad para la consulta de datos, y
excepciones definidas por el usuario. Tambin podemos especificar si se trata de una
constante, si puede contener valor nulo y asignar un valor inicial.
La sintaxis generica para la declaracion de constantes y variables es:

nombre_variable [CONSTANT] <tipo_dato> [NOT NULL][:=valor_inicial]

donde:

tipo_dato: es el tipo de dato que va a poder almacenar la variable, este puede ser
cualquiera de los tipos soportandos por ORACLE, es decir NUMBER , DATE ,
CHAR , VARCHAR, VARCHAR2, BOOLEAN ... Adems para algunos tipos de
datos (NUMBER y VARCHAR) podemos especificar la longitud.

La clusula CONSTANT indica la definicin de una constante cuyo valor no puede


ser modificado. Se debe incluir la inicializacin de la constante en su declaracin.

La clusula NOT NULL impide que a una variable se le asigne el valor nulo, y por
tanto debe inicializarse a un valor diferente de NULL.

Las variables que no son inicializadas toman el valor inicial NULL.

La inicializacin puede incluir cualquier expresin legal de PL/SQL, que


lgicamente debe corresponder con el tipo del identificador definido.

Los tipos escalares incluyen los definidos en SQL ms los tipos VARCHAR y
BOOLEAN. Este ltimo puede tomar los valores TRUE, FALSE y NULL, y se
suele utilizar para almacenar el resultado de alguna operacin lgica. VARCHAR es
un sinnimo de CHAR.

Tambin es posible definir el tipo de una variable o constante, dependiendo del tipo
de otro identificador, mediante la utilizacin de las clusulas %TYPE y
%ROWTYPE. Mediante la primera opcin se define una variable o constante
escalar, y con la segunda se define una variable fila, donde identificador puede ser
otra variable fila o una tabla. Habitualmente se utiliza %TYPE para definir la
variable del mismo tipo que tenga definido un campo en una tabla de la base de
datos, mientras que %ROWTYPE se utiliza para declarar varibales utilizando
cursores.

Ejemplos:
Estructura de un bloque annimo.
DECLARE
/* Se declara la variable de tipo VARCHAR2(15) identificada por
v_location y se le asigna
el valor "Granada"*/
v_location VARCHAR2(15) := Granada;

/*Se declara la constante

por PI y se le asigna

de tipo NUMBER identificada

el valor 3.1416*/
PI CONSTANT NUMBER := 3.1416;
/*Se declara la variable del mismo tipo que tenga el
campo nombre de la tabla tabla_empleados
identificada por v_nombre y no se le asigna ningn valor */
v_nombre tabla_empleados.nombre%TYPE;
/*Se declara la variable del tipo registro
correspondiente a un supuesto cursor, llamado
micursor, identificada por reg_datos*/
reg_datos micursor%ROWTYPE;
BEGIN

/*Parte de ejecucion*/
EXCEPTION
/*Parte de excepciones*/
END;

Estructura de un subprograma:
CREATE PROCEDURE simple_procedure IS
/* Se declara la variable de tipo VARCHAR2(15) identificada por
v_location y se le asigna
el valor "Granada"*/
v_location VARCHAR2(15) := Granada;
/*Se declara la constante

de tipo NUMBER identificada

por PI y se le asigna

el valor 3.1416*/
PI CONSTANT NUMBER := 3.1416;

/*Se declara la variable del mismo tipo que tenga el campo


nombre de la tabla tabla_empleados
identificada por v_nombre y no se le asigna ningn valor */
v_nombre tabla_empleados.nombre%TYPE;
/*Se declara la variable del tipo registro correspondiente a
un supuesto cursor, llamado
micursor, identificada por reg_datos*/
reg_datos micursor%ROWTYPE;
BEGIN
/*Parte de ejecucion*/
EXCEPTION
/*Parte de excepciones*/
END;

PL/SQL Placeholders
Placeholders are temporary storage area. PL/SQL Placeholders can be any of Variables, Constants
and Records. Oracle defines placeholders to store data temporarily, which are used to manipulate
data during the execution of a PL SQL block.

Define PL/SQL Placeholders


Depending on the kind of data you want to store, you can define placeholders with a name and a
datatype. Few of the datatypes used to define placeholders are as given below.
Number (n,m) , Char (n) , Varchar2 (n) , Date , Long , Long raw, Raw, Blob, Clob, Nclob, Bfile

PL/SQL Variables
These are placeholders that store the values that can change through the PL/SQL Block.

General Syntax to declare a variable is


variable_name datatype [NOT NULL := value ];

variable_name is the name of the variable.

datatype is a valid PL/SQL datatype.

NOT NULL is an optional specification on the variable.

value or DEFAULT valueis also an optional specification, where you can initialize a
variable.

Each variable declaration is a separate statement and must be terminated by a semicolon.

For example, if you want to store the current salary of an employee, you can use a variable.
DECLARE
salary number (6);

* salary is a variable of datatype number and of length 6.


When a variable is specified as NOT NULL, you must initialize the variable when it is declared.
For example: The below example declares two variables, one of which is a not null.
DECLARE

salary number(4);
dept varchar2(10) NOT NULL := HR Dept;

The value of a variable can change in the execution or exception section of the PL/SQL
Block. We can assign values to variables in the two ways given below.
1) We can directly assign values to variables.
The General Syntax is:
variable_name:=

value;

2) We can assign values to variables directly from the database columns by using a
SELECT.. INTO statement. The General Syntax is:
SELECT column_name
INTO variable_name
FROM table_name
[WHERE condition];

Example: The below program will get the salary of an employee with id '1116' and display
it on the screen.
DECLARE
var_salary number(6);
var_emp_id number(6) = 1116;
BEGIN
SELECT salary
INTO var_salary
FROM employee
WHERE emp_id = var_emp_id;
dbms_output.put_line(var_salary);
dbms_output.put_line('The employee '
|| var_emp_id || ' has salary
END;
/

' || var_salary);

NOTE: The backward slash '/' in the above program indicates to execute the above
PL/SQL Block.

Scope of PS/SQL Variables


PL/SQL allows the nesting of Blocks within Blocks i.e, the Execution section of an outer
block can contain inner blocks. Therefore, a variable which is accessible to an outer Block
is also accessible to all nested inner Blocks. The variables declared in the inner blocks are
not accessible to outer blocks. Based on their declaration we can classify variables into two
types.

Local variables - These are declared in a inner block and cannot be referenced by
outside Blocks.

Global variables - These are declared in a outer block and can be referenced by its
itself and by its inner blocks.

For Example: In the below example we are creating two variables in the outer block and
assigning thier product to the third variable created in the inner block. The variable
'var_mult' is declared in the inner block, so cannot be accessed in the outer block i.e. it
cannot be accessed after line 11. The variables 'var_num1' and 'var_num2' can be accessed
anywhere in the block.
1> DECLARE
2> var_num1 number;
3> var_num2 number;
4> BEGIN
5> var_num1 := 100;
6> var_num2 := 200;
7> DECLARE
8>
var_mult number;
9>
BEGIN
10>
var_mult := var_num1 * var_num2;
11>
END;
12> END;
13> /

También podría gustarte