jueves, 22 de diciembre de 2011

Clase RECUPERATIVA - Miércoles 21 de Diciembre de 2011


Tablas all_tables y all_tab_columns



select distinct owner, table_name
    from all_tables tablas
    where owner = '141565168';




select distinct column_name
    from all_tab_columns col
    where upper(owner) = 'HR'
    and lower(table_name) = '141565168';



select * from all_tables;
/********************************************************************************************/


tablas all_tables y all_tab_columns asociadas a un usuario

select owner, table_name 
from all_tables 
where owner ='141565168';


select column_name, owner, table_name 
from all_tab_columns;



/********************************************************************************************/


Realizar un cursor con catalogo del usuario



DECLARE
         vPropietario          varchar2(40);
         vNombreTabla          varchar2(40);
     vNombreColumna    varchar2(100);

       /* Primer cursor */
       cursor obtieneTablas is
       select distinct t.owner, t.table_name
       from all_tables t
       where t.owner = '158196506';

       /* Segundo cursor */
       cursor obtieneColumnas is
       select distinct c.column_name
       from all_tab_columns c
       where c.owner = vPropietario
       and c.table_name = vNombreTabla;


               begin
  open obtieneTablas;
       dbms_output.put_line('Abriendo Cursor - obtieneTablas');
       loop fetch obtieneTablas into vPropietario, vNombreTabla;
           exit when obtieneTablas%NOTFOUND;
           dbms_output.put_line('Tabla : '||vPropietario||'.'||
vNombreTabla);
      open obtieneColumnas;
      loop fetch obtieneColumnas into vNombreColumna;
             exit when obtieneColumnas%NOTFOUND;
        dbms_output.put_line('=>'||vNombreTabla||'.'||
vNombreColumna);
      end loop;
      close obtieneColumnas;
  end loop;
       close obtieneTablas;
       EXCEPTION
       WHEN OTHERS THEN
       raise_application_error(-20001,'Se ha detectado un error - '||
SQLCODE||' -ERROR- '||SQLERRM);
end;

/********************************************************************************************/


Funciones



Usando dual


select sysdate from dual;

¿Qué día de la semana nació usted?

select  
to_char(to_date(‘09-SEP-1958','dd-mon-yyyy'),'day') 
from dual;


select to_char(sysdate,'day') 
from dual;


dia de nacimiento


select to_char(to_date('14-01-1981','dd-mm-yyyy'),'day') 
from dual;



/********************************************************************************************/


%TYPE



create procedure update_emp (empid in number) 
is 
 v_empid number; 
 v_fname varchar2(20); 
 v_lname varchar2(30); 
 v_hire date; 
 v_sal number; 
begin 
end; 


create procedure update_emp (empid in number) 
is 
 v_empid employees.employee_id%type; 
 v_fname employees.first_name%type; 
 v_lname employees.last_name%type; 
 v_hire employees.hire_date%type; 
 v_sal employees.salary%type; 
begin 
end; 


begin 
 select employee_id,first_name, 
 last_name, hire_date, salary into v_empid, v_fname, v_lname, v_hire, v_sal 
 from employees 
 where employee_id = empid; 
end;


create procedure update_emp (empid in number) is 
--declare 
TYPE emp_record_type IS RECORD 
(v_empid employees.employee_id%type;
 v_fname employees.first_name%type; 
 v_lname employees.last_name%type; 
 v_hire employees.hire_date%type; 
 v_sal employees.salary%type; 
); 
emp_record emp_record_type; 
begin ...
/********************************************************************************************/


Creando tablas para pruebas



create table tx (x int,y varchar(5));

insert into tx
select rownum, trunc(dbms_random.value(1,99999))
from dual
connect by rownum <= 10;

select * from tx;


/********************************************************************************************/
Pregunta de prueba


TO_CHAR: 
Transforma un tipo DATE ó NUMBER en una cadena de caracteres. Ejemplos:
to_char(45.31, '99.9') -> retorna '45.3' 
to_char(9,125.33, '9,999.99') -> retorna '9,125.33'
to_char(77, '0099') -> retorna '0077'
TO_DATE: 
Transforma un tipo NUMBER ó CHAR en DATE. 
Ejemplo:
to_date('31/10/2007','DD/MM/YYYY‘) -> retorna ‘31/10/2007’
TO_NUMBER: 
Transforma una cadena de caracteres en NUMBER. Ejemplo:
to_number('123') -> retorna 123

/********************************************************************************************/
Funciones que devuelven valores numéricos


ASCII(cad)= Devuelve el valor ASCII de la primera letra de la cadena "cad". Ejemplo:
ASCII('R') -> Retorna 82
INSTR (cad1, cad2 [, comienzo [,m]])= Permite una búsqueda de un conjunto de caracteres en una cadena pero no suprime ningún carácter después. Ejemplo:
INSTR('CORPORATE FLOOR','OR', 3, 2) ->El resultado obtenido es 14, busca la segunda ocurrencia de la cadena OR a partir de la tercer posición
LENGTH (cad)= Devuelve el numero de caracteres de cad. Ejemplo:
LENGTH(‘HOLA’) ->retorna 4
/********************************************************************************************/


Funciones para el manejo de fechas 


SYSDATE= Devuelve la fecha del sistema. 
ADD_MONTHS (fecha, n)= Devuelve la fecha "fecha" incrementada en "n" meses. 
LAST_DAY (fecha)= Devuelve la fecha del último día del mes que contiene "fecha". 
MONTHS_BETWEEN (fecha1, fecha2)= Devuelve la diferencia en meses entre las fechas "fecha1" y "fecha2". 
NEXT_DAY (fecha, “cad”= Devuelve la fecha del primer día de la semana indicado por "cad" después de la fecha indicada por "fecha“, donde cad corresponde al día de la semana EJ: ‘sábado’

No hay comentarios:

Publicar un comentario