PL/SQL
Como delcarar una sentencia:
BEGIN
VCODIGO EMPLEADO.CODIGCO%TYPE nota: toma el tipo de dato de la BasedeDatos
XYZ VCODIGO%TYPE nota: toma el valor de la variable VCODIGO
Sentencia LOOP
DECLARE
i := 1;
BEGIN
.
.
.
LOOP
DBMS_OUTPUT_LINE ('Hola' || i );
EXIT WHEN (i>5000)
ENDLOPP
Nota: Ford-En Loop es mas preciso.
-----------------------------
Ciclo FOR
For i IN ['Hola' || i );
LOOP
DBMS_OUTPUT_LINE ('Hola' || i );
END LOOP
------------------------------------------------
Ciclo While
i := 1;
While ( i<5000)
Loop
.
.
.
End Loop
---------------------------------
Cursores
Declare
VNOMBRE empleado.nombre%type
VSEXO sexo.nombre%type
CURSOR listageneroempleado IS
VGENERO varchar2 (10)
SELECT nombre, sexo FROM empleado;
BEGIN
OPEN listageneroempleado;
LOOP
FETCH listageneroempleado INTO vnombre, vsexo;
WHEN listageneroempleado%NOTFOUND;
IF vsexo := 'M' THEN
vgenero := 'Hombre';
ELSE IF vsexo = 'F' THEN
vgenero := 'mujer'
ELSE
vgenero := 'ambiguo'
ENDIF
DBMS_OUTPUT_LINE (VNOMBRE ||'', VSEXO ||'',vgenero );
ENDLOOP
---------------------------------------
UPDATE
UPDATE empleado
SET sexo = UPPER(sexo);
Nota: Sube toda la letra en la tabla a MAYUSCULA
Fundamento de Oracle ACI 900
domingo, 18 de diciembre de 2011
viernes, 16 de diciembre de 2011
Viernes 16-12-2011
Catedra
7 preguntes de alternativa
2 de desarrollo (select
-------------------------------------------------
INSERT
listar las propiedades que "arrienda" un cliente (nombre, apellido,numpro)(join)
SELECT c.nombre, c.apellido, a.numpropiedad, a.fechainicio
from cliente c, arriendo a
where c.numclinete = a.numcliente
AND c.nombre = 'Juan'
AND c.apellido = 'Perez'
----------------con 3 tablas------------
SELECT c.nombre, c.apellido, a.numpropiedad, a.fechainicio
from cliente c, arriendo a, propiedad p, empleado e
where c.numclinete = a.numcliente
AND a.numpropiedad = p.numpropiedad
AND p.numempleado = e.numempleado
-----------------------------
ddl creando tabla
dml agregando registro
----------------------------
NULL es un valor especial para un atributo que nunca tuvo valor.
--------------------------------------
----------------------------- este es la mejor manera de buscar ------------------ que usar AND y IN
SELECT
numempleado, nombre, apellido FROM EMPLEADO WHERE numoficina IN(SELECT numoficina FROM OFICINA WHERE ciudad = 'London')
--------------------------------------
SELECT max(salario) from empleado where sexo = 'F'
--------------------------------------
7 preguntes de alternativa
2 de desarrollo (select
-------------------------------------------------
INSERT
listar las propiedades que "arrienda" un cliente (nombre, apellido,numpro)(join)
SELECT c.nombre, c.apellido, a.numpropiedad, a.fechainicio
from cliente c, arriendo a
where c.numclinete = a.numcliente
AND c.nombre = 'Juan'
AND c.apellido = 'Perez'
----------------con 3 tablas------------
SELECT c.nombre, c.apellido, a.numpropiedad, a.fechainicio
from cliente c, arriendo a, propiedad p, empleado e
where c.numclinete = a.numcliente
AND a.numpropiedad = p.numpropiedad
AND p.numempleado = e.numempleado
-----------------------------
ddl creando tabla
dml agregando registro
----------------------------
NULL es un valor especial para un atributo que nunca tuvo valor.
--------------------------------------
----------------------------- este es la mejor manera de buscar ------------------ que usar AND y IN
SELECT
numempleado, nombre, apellido FROM EMPLEADO WHERE numoficina IN(SELECT numoficina FROM OFICINA WHERE ciudad = 'London')
--------------------------------------
SELECT max(salario) from empleado where sexo = 'F'
--------------------------------------
sábado, 10 de diciembre de 2011
Sabado clase 11:00 hrs 10-12-2011
Programacion en PL/SQL
Creacion de una tabla
CREATE TABLE T1(
e INTEGER,
f INTEGER
);
Para insertar
INSERT INTO T1 VALUES (1, 3);INSERT INTO T1 VALUES (2, 4);
------------------------
Comando para escribir
SET SERVEROUTPUT ON \* este habilita la pantalla, para que salga la pantalla
BEGIN
DBMS_output.put_line ('Oracle ACI900')
END
---------------------
Ocupando el IF
DECLARE
precio INTEGER := 18;
BEGIN
IF precio >= 15 THEN
DBMS_output.put_line ('El valor es');
END IF;
END;
------------------------
Ocupando ELSE
DECLARE
DECLARE precio INTEGER := 18;
TEXT VARCHAR2 (25);
BEGIN
IF PRECIO >= 15 THEN
TEXTO := 'Mayor'
else
text := 'menor' end if;
-------------------------------
Ocupando LOOP
DECLARE
I integer;
begin
I:=1;
LOOP
DBMS_output.put_line ('El valor es:=' || I);
I:=I+1;
EXIT when I>10;
END LOOP;
END;
Creacion de una tabla
CREATE TABLE T1(
e INTEGER,
f INTEGER
);
Para insertar
INSERT INTO T1 VALUES (1, 3);INSERT INTO T1 VALUES (2, 4);
------------------------
Comando para escribir
SET SERVEROUTPUT ON \* este habilita la pantalla, para que salga la pantalla
BEGIN
DBMS_output.put_line ('Oracle ACI900')
END
---------------------
Ocupando el IF
DECLARE
precio INTEGER := 18;
BEGIN
IF precio >= 15 THEN
DBMS_output.put_line ('El valor es');
END IF;
END;
------------------------
Ocupando ELSE
DECLARE
DECLARE precio INTEGER := 18;
TEXT VARCHAR2 (25);
BEGIN
IF PRECIO >= 15 THEN
TEXTO := 'Mayor'
else
text := 'menor' end if;
-------------------------------
Ocupando LOOP
DECLARE
I integer;
begin
I:=1;
LOOP
DBMS_output.put_line ('El valor es:=' || I);
I:=I+1;
EXIT when I>10;
END LOOP;
END;
Clase Sabado 10-12-2011
SELECT * FROM empleado WHERE salario >=100000 AND salario <= 300000;
De otra manera
SELECT * FROM EMPLEADO WHERE salario BETWEEN 200000 AND 30000;
Para buscar una fecha
Nota: hay que transformar primero la fecha a CHAR, igual que cuando se transforma mayuscula y minusculaSELECT * FROM EMPLEADO WHERE fechanacimiento BETWEEN '1-12-1960 and '12-03-2011';
---------------------------------
developer
----------------------------------
Para buscar en 2 tablas SELECT e.numEmpleado,nombre,ciudad FROM empleado e, oficina o WHERE e.numOficina = o.numOficina
------------------------------------------
Para hacer la pregunta seria buena ocupar
IN - UPPER - LOWER - ROUND - VARCHAR2 - NUMBER - INTEGER - BOOLEAN (acepta V y F) - LIKE
Comando para borrar tabla
Comando para borra registro de una tabla (Ejemplo , borrar todos los empleados que ganan mas de 100000
Ejemplo DELETE from empleado where between 100000 and 200000;
-----------------------------------------------
SELECT * FROM empleado WHERE cargo = 'Gerente' AND salario >= 100000;
--------------------------
LISTAR todos los gerentes con el string 0Glasgow'
SELECT * FROM cliente WHERE direccion like '%Glasgow%';
Los que inician con P
SELECT * FROM cliente WHERE direccion like '%P%';
----------------------
NOTA : % cualquier caracter
Nota : - solo un caracter
---------------
Para sacar los espacios se ocupa el TRIM
SELECT * FROM empleado WHERE trim(cargo) LIKE 'Gerent_';
Nota existe RTRIM borra hacia la dereha
LTRIM borra hacia la izquierda
------------------------------------------------------
Para buscar que en la tabla visita en comentario no este vacio
SELECT * FROM visita WHERE comentario IS NOT NULL ;
De otra manera
SELECT * FROM EMPLEADO WHERE salario BETWEEN 200000 AND 30000;
Para buscar una fecha
Nota: hay que transformar primero la fecha a CHAR, igual que cuando se transforma mayuscula y minusculaSELECT * FROM EMPLEADO WHERE fechanacimiento BETWEEN '1-12-1960 and '12-03-2011';
---------------------------------
developer
----------------------------------
Para buscar en 2 tablas SELECT e.numEmpleado,nombre,ciudad FROM empleado e, oficina o WHERE e.numOficina = o.numOficina
------------------------------------------
Para hacer la pregunta seria buena ocupar
IN - UPPER - LOWER - ROUND - VARCHAR2 - NUMBER - INTEGER - BOOLEAN (acepta V y F) - LIKE
Comando para borrar tabla
Comando para borra registro de una tabla (Ejemplo , borrar todos los empleados que ganan mas de 100000
Ejemplo DELETE from empleado where between 100000 and 200000;
-----------------------------------------------
SELECT * FROM empleado WHERE cargo = 'Gerente' AND salario >= 100000;
--------------------------
LISTAR todos los gerentes con el string 0Glasgow'
SELECT * FROM cliente WHERE direccion like '%Glasgow%';
Los que inician con P
SELECT * FROM cliente WHERE direccion like '%P%';
----------------------
NOTA : % cualquier caracter
Nota : - solo un caracter
---------------
Para sacar los espacios se ocupa el TRIM
SELECT * FROM empleado WHERE trim(cargo) LIKE 'Gerent_';
Nota existe RTRIM borra hacia la dereha
LTRIM borra hacia la izquierda
------------------------------------------------------
Para buscar que en la tabla visita en comentario no este vacio
SELECT * FROM visita WHERE comentario IS NOT NULL ;
viernes, 9 de diciembre de 2011
Suscribirse a:
Entradas (Atom)