domingo, 18 de diciembre de 2011

Sabado 17-12-2011

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

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'

--------------------------------------

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;
  





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 ;