Está en la página 1de 21

Conceptos bsicos de

programacin con
PL/SQL
Base de Datos II
MC

Introduccin

SQL es un lenguaje de consulta para los


sistemas de bases de datos relacinales
Muy diferentes a un lenguaje de
programacin.
Se hace necesario utilizar alguna
herramienta que soporte la capacidad de
consulta del SQL y la versatilidad de los
lenguajes de programacin tradicionales.

Qu es PL/SQL

PL/SQL es el lenguaje de programacin que


proporciona Oracle para extender el SQL
estndar con otro tipo de instrucciones auque
menos potentes que las aplicaciones.

Tipo de datos

NUMBER[(precision, scale)]
CHAR[(maximum_length)]
VARCHAR2(maximum_length) (32767 bytes. )
BOOLEAN(True,False)
DATE ( January 1, 4712 BC to December 31, 4712 AD )

Comentarios

En PL/SQL los comentarios de una sola lnea


comienzan con --,
-- Inicio del bloque de ejecucin

los de varias lneas comienzan con /* y


terminan con */.
/* This is a simple example of an exeception handler
to trap division by zero. */

Bloques PL/SQL

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:

Estructura PL/SQL
DECLARE
/* Parte Declarativa */
BEGIN
/* Parte de Ejecucin */
EXCEPTION
/* Parte de Excepciones */
END;

Seccin de Declaracin de
Variables

En esta parte se declaran todos los tipos de


datos, las constantes y variables utilizadas
en el
bloque de ejecucin. Tambin se declaran
cursores, de gran utilidad para la consulta de
datos, y excepciones definidas por el usuario.
Es conveniente que el nombre de una
variable comience por la letra v, el de una
constante por c y as sucesivamente.

CONSTANTES Y VARIABLES
nombre_variable [CONSTANT] tipo [NOT
NULL] [:= valor_inicial];
Donde tipo es: tipo_escalar | identif%TYPE |
identificador%ROWTYPE
tipo_escalar: NUMBER | DATE | CHAR |
VARCHAR | BOOLEAN

Declaraciones

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.

Declaraciones
birthdate DATE;
emp_count SMALLINT := 0;
acct_id VARCHAR2 (5) NOT NULL:= 'AP001';

Constantes
credit_limit CONSTANT REAL := 5000.00;

Declaraciones
DECLARE
-- declare the variables in this section
last_name VARCHAR2(30);
first_name VARCHAR2(25);
employee_id NUMBER(6);
active_employee BOOLEAN;
monthly_salary NUMBER(6);
number_of_days_worked NUMBER(2);
pay_per_day NUMBER(6,2);
avg_days_worked_month CONSTANT NUMBER(2) := 21;
-- a constant variable

Sentencia Default

tax_year SMALLINT DEFAULT 92;


valid BOOLEAN DEFAULT FALSE;

Visualizar valores

Para poder visualizar valores desde dentro de un


bloque PL/SQL se debe ejecutar la instruccin:

dbms_output.put_line(dato).

En inferiores a Oracle 10: Previamente hay que


habilitar la visualizacin en el entorno de SQL*Plus
con la instruccin SET SERVEROUTPUT ON.

Lnea de Comandos
-- enable SERVEROUTPUT in SQL Command
Line (SQL*Plus) to display output with
-- DBMS_OUTPUT.PUT_LINE, this enables
SERVEROUTPUT for this SQL*Plus session
only SET SERVEROUTPUT ON

BEGIN
DBMS_OUTPUT.DISABLE;
DBMS_OUTPUT.ENABLE (1000000);

DBMS_OUTPUT.PUT_LINE (texto);
DBMS_OUTPUT.PUT (texto);
DBMS_OUTPUT.NEW_LINE;
END;

Ejemplo
DECLARE
answer VARCHAR2(20); -- declare a variable
BEGIN
-- assign a value to a variable
answer := 'Maybe';
/* use PUT_LINE to display data from the PL/SQL
block, puede concatenar los resultados */
DBMS_OUTPUT.PUT_LINE( 'The answer is: ' ||
answer );
END;
/

Ejemplo
DECLARE
nombre_variable VARCHAR2(25);
BEGIN
SELECT last_name
INTO nombre_variable
FROM employees where last_name like 'Urman';
DBMS_OUTPUT.PUT_LINE( 'EL nombre es '||
nombre_variable );
END;

DECLARE
monthly_salary NUMBER(6);
number_of_days_worked NUMBER(2);
pay_per_day NUMBER(6,2);
-- Parte executable from BEGIN to END
BEGIN
monthly_salary := 2290;
number_of_days_worked := 21;
pay_per_day := monthly_salary/number_of_days_worked;
-- the following displays output from the PL/SQL block
DBMS_OUTPUT.PUT_LINE('The pay per day is ' || TO_CHAR(pay_per_day));
-- the following is an optional exception part that handles errors
EXCEPTION WHEN ZERO_DIVIDE THEN pay_per_day := 0;
END;
/

ejemplo
DECLARE -- declare and assign values bonus_rate
CONSTANT NUMBER(2,3) := 0.05;
bonus NUMBER(8,2);
emp_id NUMBER(6) := 120;
-- assign a test value for employee ID
BEGIN
/* retreive a salary from the employees table, then calculate the bonus and
assign the value to the bonus variable */
SELECT salary * bonus_rate INTO bonus FROM employees
WHERE employee_id = emp_id;
-- display the employee_id, bonus amount, and bonus rate
DBMS_OUTPUT.PUT_LINE ( 'Employee: ' || TO_CHAR(emp_id) || 'Bonus: '
|| TO_CHAR(bonus) || ' Bonus Rate: ' || TO_CHAR(bonus_rate));
END;
/

Construya un bloque PLSQL que le permita


mostrar el apellido y el sueldo total de un
empleado X
Construya un bloque PLSQL que le permita
mostrar en pantalla la frase: Hola mundo y
que esta salga por la consola de comandos

También podría gustarte