Está en la página 1de 6

4.

- INTRODUCCIN A PL/SQL (Parte II)


Los registros son tipos de datos que deben de ser definidos por los usuarios. Los registros y las tablas forman los tipos de datos compuestos de PL/SQL Un registro es una estructura de datos en PL/SQL almacenados en campos En donde cada campo puede ser de diferente tipo y cada campo tiene un nombre. TYPE nombre_registro IS RECORD ( Campo1 tipo1 (tamao), Campo2 tipo2 (tamao), campoN tipoN (tamao) ); TYPE Estudiante IS RECORD ( Cuenta NUMBER (5), Nombre VARCHAR(20), Apellidos VARCHAR(25) ); Para hacer referencia a los campos de un registro se debe de usar la sintaxis siguiente: Nombre_del_registro.Nombre_del_campo Ejemplo // Asignarle datos a cada uno de los campos Estudiante.Cuenta:=12345; Estudiante.Nombre:=Mnica; Estudiante.Apellidos:=Fuentes;

Registros y tablas

Sintaxis

Ejemplo

Hacer referencia a los campos

4.- Introduccin a PL/SQL Lic. Mnica C. Fuentes Gonzlez

Pgina 1

Estructuras de control

Permiten controlar el comportamiento del bloque a medida que este se ejecuta. Las ms importantes son las estructuras condicionales y los bucles.

Estructuras condicionales

Se utilizan para la realizacin de acciones dependiendo de que una condicin se cumpla o no.

Instruccin
Objetivo Sintaxis

IF-THEN

Ejemplo

Evaluar una condicin y si se cumple ejecutar el grupo de instrucciones que se encuentran adentro del if. If condicin then Instruccin1; Instruccin2; InstruccinN; End if If num1 > num2 then Mayor:= num1; End if If ventas > 1000 then dbms_output.put_line(Excelente vendedor); end if

Instruccin
Objetivo Sintaxis

IF-THEN-ELSE

Ejemplo

Evaluar una condicin y si es verdadera ejecutar un grupo de instrucciones, si es falsa ejecutar el otro grupo de instrucciones. If condicin then Instruccin1; Instruccin2; InstruccinN; Else Instruccin1; Instruccin2; InstruccinN; End if If num1 > num2 then /* instrucciones para verdadero */ Mayor:= num1; Else /*instrucciones para falso */ Mayor:=num2; End if

4.- Introduccin a PL/SQL Lic. Mnica C. Fuentes Gonzlez

Pgina 2

Instruccin Objetivo

IF-THEN-ELSIF Se utiliza para seleccionar una opcin entre varias alternativas. Si la primer condicin es falsa, se comparan las siguientes opciones hasta que de verdadero. If condicin1 then Instruccin1; Instruccin2; InstruccinN; Else If condicion2 then Instruccin1; Instruccin2; InstruccinN; End if

Sintaxis

End if O tambin se puede usar elsif NOTA: observe que se escribe elsif y no ELSEIF
If condicin1 then Instruccin1; Instruccin2; InstruccinN; ElsIf condicion2 then Instruccin1; Instruccin2; InstruccinN; End if If ventas > 1000 then dbms_output.put_line(Excelente vendedor); else If ventas > 500 then dbms_output.put_line(Buen vendedor); else dbms_output.put_line(Buen vendedor); end if end if Con la otra sintaxis If ventas > 1000 then dbms_output.put_line(Excelente vendedor); elsIf ventas > 500 then dbms_output.put_line(Buen vendedor); else dbms_output.put_line(Buen vendedor); end if

Ejemplo

4.- Introduccin a PL/SQL Lic. Mnica C. Fuentes Gonzlez

Pgina 3

Instruccin Objetivo

Case Selecciona un grupo de instrucciones a ejecutar, a diferencia del if no requiere de una expresin booleana. Lo que se evala es una expresin.

Sintaxis

CASE expresin When valorA THEN instrucciones; When valorB THEN instrucciones; When valorN THEN instrucciones; END CASE; EXCEPTION CASE_NOT_FOUND THEN
Instruccion; Otra forma

CASE expresin When valorA THEN instrucciones; When valorB THEN instrucciones; When valorN THEN instrucciones; ELSE instruccion; END CASE;

Ejemplo
dia:=L; CASE dia WHEN L dbms_output.put_line(Lunes); WHEN M dbms_output.put_line(Martes);

WHEN I dbms_output.put_line(Miercoles); WHEN J dbms_output.put_line(Jueves); WHEN V dbms_output.put_line(Viernes); WHEN S dbms_output.put_line(Sabado); WHEN D dbms_output.put_line(Domingo); ELSE dbms_output.put_line(Ese da no existe); END CASE;

4.- Introduccin a PL/SQL Lic. Mnica C. Fuentes Gonzlez

Pgina 4

Bucles

Se utilizan para ejecutar rdenes en forma a repetida Instruccin Objetivo LOOP-END LOOP (exit) Repetir un conjunto de instrucciones mientras se cumpla una condicin. Por lo menos las instrucciones las ejecuta UNA vez LOOP Secuencia de instrucciones; EXIT WHEN condicin; END LOOP; El siguiente ciclo va a mostrar como va a aumentando el valor del contador hasta llegar al nmero 10 v_conta:=1; LOOP Dbms_output_put.line(Contador vale || v_conta); v_conta:= v_conta + 1; EXIT WHEN v_conta:=10; END LOOP; Instruccin Objetivo WHILE LOOP END-LOOP Se realiza una evaluacin previa de la condicin, si la condicin se cumple, el conjunto de instrucciones se ejecuta. En caso de que la condicin no se cumpla las instrucciones no se ejecutan. Puede ser que NUNCA se ejecute el conjunto de instrucciones. WHILE condicin LOOP Secuencia de instrucciones; END LOOP WHILE v_conta<50 LOOP INSERT INTO alumnos VALUES(Mnica,v_conta); v_conta:=vconta + 1; END LOOP; FOR Repetir un conjunto de instrucciones un determinado numero de veces For variable IN limiteInferior . . LimiteSuperiro LOOP Conjunto de instrucciones; END LOOP;

Sintaxis

Ejemplo

Sintaxis

Ejemplo

Instruccin Objetivo Sintaxis

4.- Introduccin a PL/SQL Lic. Mnica C. Fuentes Gonzlez

Pgina 5

Ejemplo

Mostrar en pantalla el incremento del contador de 1 a 10. FOR x IN 1 . . 10 LOOP Dbms_output_put.line(El contador vale || x); END LOOP;

NOTA

El FOR tambin se puede usar en forma decreciente FOR x IN REVERSE 10 . . 1 LOOP Dbms_output_put.line(El contador vale || x); END LOOP;

ORDEN goto Introduccin En PL/SQL se dispone de la orden de salto GO TO. Para identificar el lugar al que se tiene que realizar el salto se utiliza una etiqueta que se encierra entre corchetes angulares dobles. (<< >>) La sintaxis es la siguiente GOTO etiqueta; Ejemplo v_valor:=1; if (v_valor = 1 ) then goto paso2; end if << paso1>> dbms_output_put.line(Ejecutando el paso 1); << paso2 >> dbms_output_put.line(Ejecutando el paso 2); NOTA: comando obsoleto

4.- Introduccin a PL/SQL Lic. Mnica C. Fuentes Gonzlez

Pgina 6