0% encontró este documento útil (0 votos)
110 vistas

SQL Programacion

El bloque PL/SQL es la unidad básica de programación en PL/SQL. Un bloque contiene instrucciones SQL y PL/SQL que Oracle ejecuta. Las variables se declaran dentro de un bloque y pueden anclarse al tipo de datos de una columna o tabla mediante los tipos %TYPE y %ROWTYPE. Los bloques también pueden contener estructuras de control como IF/THEN/ELSE, bucles LOOP, FOR y WHILE.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
110 vistas

SQL Programacion

El bloque PL/SQL es la unidad básica de programación en PL/SQL. Un bloque contiene instrucciones SQL y PL/SQL que Oracle ejecuta. Las variables se declaran dentro de un bloque y pueden anclarse al tipo de datos de una columna o tabla mediante los tipos %TYPE y %ROWTYPE. Los bloques también pueden contener estructuras de control como IF/THEN/ELSE, bucles LOOP, FOR y WHILE.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

BLOQUE PL/SQL

La unidad bsica de programacin PL/SQL es llamada bloque. Un


bloque contiene un conjunto de instrucciones para que Oracle
ejecute, despliegue informacin en pantalla, escriba archivos,
llame otros programas, manipule datos, entre otras cosas.

BLOQUE PL/SQL
Ejemplos
-- Despliegue en pantalla de la frase SOY UN BLOQUE
SET SERVEROUT ON -- Permite el despliegue en pantalla
BEGIN
DBMS_OUTPUT.PUT_LINE(SOY UN BLOQUE);
END;
/
-- Mi primer bloque
DECLARE
-- Declara la variable v_date con tipo de dato DATE
v_date DATE;
BEGIN
-- Recupera la fecha corriente en la variable
SELECT CURRENT_DATE INTO v_date
FROM DUAL;
-- Despliega la fecha corriente en pantalla
DBMS_OUTPUT.PUT_LINE (TO_CHAR(v_date,DD/MM/YYYY));
END;
/

BLOQUE PL/SQL
Ejemplos
-- Bloque con Excepcion
DECLARE
v_date VARCHAR2(10);
BEGIN
SELECT CURRENT_DATE INTO v_date
FROM DUAL;
DBMS_OUTPUT.PUT_LINE (TO_CHAR(v_date,DD/MM/YYYY));
EXCEPTION
WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(PROBLEMA);
END;
/

Variables
Las variables son regiones de memoria en un bloque PL/SQL que
requieren datos. Estas, se definen en la seccin de
DECLARACIN, donde son asignadas a un tipo especfico de dato
y en ocasiones inicializadas con algn valor.
Sintaxis:
nombre_variable [CONSTANT] TIPO [NOT NULL] [:= VALOR]
Ejemplos
CORRECTAS
VAR1 VARCHAR2(25);
VAR2 INTEGER := 8;
VAR3 DATE NOT NULL DEFAULT CURRENT_DATE;
INCORRECTAS
VAR1, VAR2 VARCHAR2(50);
VAR3 NUMBER NOT NULL;

Alcance de las variables


Ejemplo
DECLARE
b_Ok
BOOLEAN;
n_valor NUMBER(9);
BEGIN
DECLARE
n_valor CHAR(11);
d_fecha DATE;
BEGIN
END;
END;

n_valor NUMBER(9)

n_valor CHAR(11)

%TYPE
Si la variable que se declara se mapea directamente a una
columna de la base de datos, se puede anclar su tipo al tipo de
columna en la base de datos con %TYPE.
Ejemplo
-- Variable del tipo de la columna APELLIDO de la tabla
EMPLEADO de la BD.
VAR_APELLIDO EMPLEADO.APELLIDO%TYPE;
%ROWTYPE
Similar a %TYPE, solo que ste ancla la variable al tipo de datos
de todas las columnas de la tabla de la base de datos.
Ejemplo
-- Variable del tipo de la tabla DEPARTAMENTO de la BD
VAR_DEP DEPARTAMENTO%ROWTYPE;

Ejemplo
-- USANDO TYPE Y ROWTYPE
DECLARE
VAR_APELLIDO EMPLEADO.APELLIDO%TYPE;
VAR_DEP
DEPARTAMENTO%ROWTYPE;
BEGIN
SELECT APELLIDO INTO VAR_APELLIDO
FROM EMPLEADO
WHERE DEPTO_NO=66;
SELECT * INTO VAR_DEP
FROM DEPARTAMENTO
WHERE DEPTO_NO=66;
DBMS_OUTPUT.PUT_LINE( VAR_APELLIDO || ||
VAR_DEP.NOMBRE);
END;
/

Ejemplo
-- USANDO TYPE Y ROWTYPE (CON JOIN)
DECLARE
VAR_APELLIDO EMPLEADO.APELLIDO%TYPE;
VAR_DEP
DEPARTAMENTO%ROWTYPE;
BEGIN
SELECT APELLIDO,NOMBRE INTO
VAR_APELLIDO,VAR_DEP.NOMBRE
FROM EMPLEADO E,DEPARTAMENTO D
WHERE E.DEPTO_NO=D.DEPTO_NO
AND E.DEPTO_NO=66;
DBMS_OUTPUT.PUT_LINE( VAR_APELLIDO || ||
VAR_DEP.NOMBRE);
END;
/

STRUCTURA DE CONTROL IF/THEN/ELSE

IF CONDICION1 THEN
INSTRUCCIONES ;
[ELSEIF CONDICION2 THEN
INSTRUCCIONES];
[ELSE
INSTRUCCIONES];
END IF;

Ejemplo
-- SENTENCIA DE CONTROL
DECLARE
VAR_CONT NUMBER(3);
BEGIN
SELECT LENGTH(NOMM) INTO VAR_CONT
FROM MATERIA
WHERE CLAVE=S01;
IF VAR_CONT > 10 THEN
DBMS_OUTPUT.PUT_LINE(SOY MAYOR A 10);
ELSE
DBMS_OUTPUT.PUT_LINE(SOY MENOR A 10);
END IF;
END;
/

CICLOS LOOP/FOR/WHILE

Ciclo Simple (LOOP)

Ciclo Numrico
(FOR)

LOOP
INSTRUCCIONES ;
EXIT WHEN
condicin
END LOOP;
FOR contador IN nmero_inicial ..
nmero_final LOOP
INSTRUCCIONES ;
END LOOP;
Ciclo
While

WHILE condicin
LOOP
INSTRUCCIONES
;
END LOOP;

Ejemplo
DECLARE
CONT NUMBER(2) := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE
(X= || CONT);
CONT := CONT + 1;
EXIT WHEN CONT = 21;
END LOOP;
END;
/

DECLARE
CONT NUMBER(2) ;
BEGIN
FOR CONT IN 1 .. 20 LOOP
DBMS_OUTPUT.PUT_LINE
(X= || CONT);
END LOOP;
END;
/

DECLARE
CONT NUMBER(2) := 1;
BEGIN
WHILE CONT <=20 LOOP
DBMS_OUTPUT.PUT_LINE
(X= || CONT);
CONT := CONT + 1;
END LOOP;
END;
/

También podría gustarte