Pl/SQL Procedural Language/Structured Query Language Features Pl/SQL
Oracle Sep 06 PL SQL
-
Upload
jean-pierre-quispe -
Category
Documents
-
view
9 -
download
0
Transcript of Oracle Sep 06 PL SQL
![Page 1: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/1.jpg)
UNIVERSIDAD NACIONALJOSE FAUSTINO SANCHEZ CARRION
FACULTAD DE INGENIERIA
ESCUELA ACADEMICO PROFESIONAL DEINGENIERIA INFORMATICA
CURSOBASE DE DATOS II
SEPARATA Nº 06PL/SQL
(PROCEDURAL LANGUAGE / SQL)
DOCENTEING. EDWIN IVAN FARRO PACIFICO
HUACHO-LIMAPERU
![Page 2: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/2.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 2
PL/SQL(PROCEDURAL LANGUAGE/SQL)
Es un sofisticado lenguaje de programación que se utiliza para acceder a bases de datos Oracledesde distintos entornos. Está integrado con el servidor, de modo que el código PL/SQL puede serprocesado de forma rápida y eficiente.PL/SQL amplia la funcionalidad de SQL añadiendo estructuras de las que pueden encontrarse enotros lenguajes procedimentales como:
Variables y tipos. Estructuras de control Procedimientos y funciones Tipos de objetos y métodos.
EL MOTOR PL/SQLEstos dos ambientes son independientes. En cualquiera de estos dos ambientes, el motor PL/SQLacepta como entrada válida cualquier bloque PL/SQL o subprograma.L siguiente figura muestra como el motor PL/SQL procesa un bloque anónimo. El motor ejecuta lassentencias procedimentales y envía las sentencias SQL al ejecutor de estas sentencias en elservidor Oracle.
EL BLOQUE PL/SQLLa unidad básica de cualquier programa PL/SQL es el bloque. Todos los programas PL/SQL estáncompuestos por bloques, que pueden estar situados de manera secuencial 8uno después de otro) oestar anidados (uno dentro de otro).
Declaración de variablesExisten dos tipos:
Constantes Variables
Ejemplo:Declaración ilegal
DECLAREnombre,direccion VARCHAR2(50)
Declaración correcta
Tipo CHAR y VARCHAR2DECLARE
Codigo CHAR(5);Nombre VARCHAR2(50);Direccion VARCHAR2(50);
Tipo NUMBER y CONSTANTEDECLARE
Salario NUMBER(10,2);Institución CONSTANT VARCHAR2(20) := ‘INGENIERIA INFORMATICA’;
![Page 3: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/3.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 3
Tipo DATEDECLARE
Inicio DATE := ‘1-06-05’;
Tipo BOOLEANDECLARE
Estado BOOLEAN NOT NULL := FALSE;Activado BOOLEAN := TRUE;
DECLARACION DE ATRIBUTOSPara la definición de los tipos de datos de las variables se pueden referenciar a tipos de datosdefinidos en el diccionario de datos denominados atributos.
Atributo %TYPEUn identificador que se declara con este tipo de atributo toma la definición de un identificadorexistente o la de una columna de una tabla.Ejemplo:
DECLAREv_deptno dept.deptno%type;v_dname dept.dname%type;v_loc dept.loc%type;BEGIN
v_deptno:=60;v_dname:='SISTEMAS';v_loc:='LIMA';INSERT INTO dept(deptno,dname,loc)VALUES(v_deptno,v_dname,v_loc);
END;
Atributo %ROWTYPEUn identificador que se declara con este tipo de atributo toma la definición que tiene toda la fila deuna tabla.Ejemplo:
DECLAREv_dept dept%rowtype;BEGIN
v_dept.deptno:=70;v_dept.dname:='FINANZAS';v_dept.loc:='HUACHO';INSERT INTO dept(deptno,dname,loc)VALUES(v_dept.deptno,v_dept.dname,v_dept.loc);
END;
AMBITO Y VISIBILIDAD DE LAS VARIABLESEl ámbito de una variable es aquella parte del programa en la que se puede acceder a dichavariable. Para una variable PL/SQL, será desde la definición de la variable hasta el final del bloque.
![Page 4: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/4.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 4
Cuando una variable cae fuera del ámbito, el motor PL/SQL libera la memoria utilizada paraalmacenar, dado que ya no se puede hacer referencia a la misma.
SQL DENTRO DE PL/SQL
El lenguaje estructurado de consultas (SQL) define como manipular los datos de Oracle. Loscomponentes procedimientales de PL/SQL son considerablemente más útiles cuando se combinana los programas PL/SQL manipular datos en la base de datos ORACLE.PL/SQL soporta las siguientes instrucciones SQL:
Insert Update Delete Select
INSERTEjemplo:DECLAREv_empno number(4):=7950;v_ename varchar2(10):='DIANA';BEGIN
INSERT INTO emp(empno,ename)VALUES(v_empno,v_ename);
END;
UPDATEEjemplo:DECLAREv_empno number(4):=7950;v_hiredate date:=SYSDATE-1;BEGIN
UPDATE empSET hiredate=v_hiredateWHERE empno=v_empno;
END;
DECLAREv_numero NUMBER(5,2);BEGIN
DECLAREv_caracter VARCHAR2(10);BEGIN……………..……………..……………..END;
END;
Ámbito dev_numero Ámbito de
v_caracter
![Page 5: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/5.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 5
DELETEEjemplo:DECLAREv_empno number(4):=7950;BEGIN
DELETE FROM empWHERE empno=v_empno;
END;
SELECTEjemplo:DECLAREv_empno emp.empno%type:=7876;v_ename emp.ename%type;v_sal emp.sal%type;BEGIN
SELECT empno,ename,salINTO v_empno,v_ename,v_salFROM empWHERE empno=v_empno;dbms_output.put_line('El empleado : ' ||v_ename||' gana '|| TO_CHAR(v_sal));
END;
Ejemplo:DECLAREv_dept dept%rowtype;BEGIN
v_dept.deptno:=10;SELECT dname,locINTO v_dept.dname,v_dept.locFROM deptWHERE deptno=v_dept.deptno;dbms_output.put_line('El departamento : '||v_dept.dname||' está ubicado en '||v_dept.loc);
END;
CONTROL ITERATIVO Y CONDICIONAL
INSTRUCCIÓN IFEjecuta condicionalmente una instrucción o un a secuencia de instrucciones.Sintaxis:
IF <condición> THEN<instrucciones>;
ELSIF<instrucciones>;
ELSE<instrucciones>;
END IF;
![Page 6: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/6.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 6
Ejemplo:DECLAREv_ename emp.ename%type;v_sal emp.sal%type;v_hiredate emp.hiredate%type;BEGIN
SELECT ename,sal,hiredateINTO v_ename,v_sal,v_hiredateFROM empWHERE empno=7369;IF (v_sal=800) then
dbms_output.put_line(v_ename||' Gana 800 ');ELSE
dbms_output.put_line(v_ename||' No gana 800');END IF;
END;
Ejemplo:DECLAREv_ename emp.ename%type;v_sal emp.sal%type;v_hiredate emp.hiredate%type;BEGIN
SELECT ename,sal,hiredateINTO v_ename,v_sal,v_hiredateFROM empWHERE empno=7369;IF (v_sal=800) then
dbms_output.put_line(v_ename||' Gana 800 ');
ELSIF (v_sal<800) thendbms_output.put_line(v_ename||' Gana menos de 800');
ELSEdbms_output.put_line(v_ename||' Gana más de 800');
END IF;END;
Ejemplo:DECLAREv_deptno NUMBER;BEGIN
SELECT ROUND(dbms_random.value*10)*10INTO v_deptno FROM dual;IF v_deptno=10 THEN
dbms_output.put_line(v_deptno||': Contabilidad');ELSIF v_deptno=20 THEN
dbms_output.put_line(v_deptno||': Investigación');
![Page 7: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/7.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 7
ELSIF v_deptno=30 THENdbms_output.put_line(v_deptno||': Ventas');
ELSIF v_deptno=40 THENdbms_output.put_line(v_deptno||': Operaciones');
ELSEdbms_output.put_line('Sin departamento');
END IF;END;
INSTRUCCIÓN CASEUna instrucción CASE evalúa una expresión, y de acuerdo al resultado de ella ejecuta o realiza unade varias alternativas posibles.Sintaxis:CASE test%variable
WHEN valor1 THEN secuencia_instrucciones1WHEN valor1 THEN secuencia_instrucciones2…[ELSE otra_secuencia]
END CASE;
Ejemplo:DECLAREv_ename emp.ename%type;v_deptno emp.deptno%type;BEGIN
SELECT ename,deptnoINTO v_ename,v_deptnoFROM empWHERE empno=7369;dbms_output.put_line(v_ename||' Trabaja en : ');CASE v_deptno
WHEN 10 then dbms_output.put_line('Operaciones');WHEN 20 then dbms_output.put_line('Logística');WHEN 30 then dbms_output.put_line('Contabilidad');
END CASE;END;
![Page 8: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/8.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 8
INSTRUCCIONES CONDICIONALES
BUCLE LOOPSintaxis:Loop
<instrucciones>;end loop;
Ejemplo:Visualizar los 10 primeros números naturalesDECLAREcont NUMBER:=1;BEGIN
LOOPdbms_output.put_line('Número:'||to_char(cont,'9999'));cont:=cont+1;EXIT WHEN cont>10;
END LOOP;END;
BUCLE FORSintaxis:FOR <indice> IN [REVERSE] <inicio>..<fin> LOOP
<instrucciones>END LOOP;
Ejemplo:Visualizar los 10 primeros números naturalesDECLAREcont NUMBER;BEGIN
FOR cont IN 1..10 LOOPdbms_output.put_line('Número:'||to_char(cont,'9999'));
END LOOP;END;
Visualizar los 10 primeros números naturales en forma descendenteDECLAREcont NUMBER;BEGIN
FOR cont IN REVERSE 1..10 LOOPdbms_output.put_line('Número:'||to_char(cont,'9999'));
END LOOP;END;
BUCLE WHILERepiten una secuencia de instrucciones hasta que una condición especifica ya no sea verdadera.Sintaxis:
![Page 9: Oracle Sep 06 PL SQL](https://reader036.fdocuments.us/reader036/viewer/2022081908/55cf969b550346d0338c9cd7/html5/thumbnails/9.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 9
WHILE <condicion> LOOP<instrucciones>
LOOP;
DECLAREcont NUMBER;BEGIN
cont:=1;WHILE (cont<=10) LOOP
dbms_output.put_line('Número:'||to_char(cont,'9999'));cont:=cont+1;
END LOOP;END;