martes, 17 de abril de 2012

Tipos de datos PL/SQL:

*decimal(p,e): La precicion maxima es de 38 digitos. Es un numero que tiene 2 digitos antes del decimal y un digito despues del decimal.

*double precision.

*float: la precicion maxima es de 38 decimales.

*int.

*integer
.
*numeric(p,e): La precision maxima es de 38 digitos. Don p es la precision y e la escala por ejemplo numeric(7,2) es un numero que tiene 5 digitos antes del decimal y 2 digitos despues del decimal.

*number( tiene las mismas caracteristicas que numeric).

*real.

*char(tamaño) hasta 32767 bytes en plsql.Donde tamaño es el numero de caracteres a almacenar. Son cadenas de ancho fijo.Se rellana con espacios.

*varchar2(tamaño).Hasta 32767 bytes en plsql. Donde tamaño es el numero de caracteres a almacenar.Son cadenas de ancho variable.

*Long: Hasta 2 gigabytes.  Son cadenas de ancho variable.

*raw: Hasta 32767 bytes en plsql. Son cadenas binarias de ancho variable.

*long raw: Hasta 2 gigabytes. Son cadenas binarias de ancho variable.

*timestamp(fractional seconds precision) : Incluye año, mes, dia, hora, minutos y segundos. Por ejemplo timestamp(6), debe ser un numero entre 0 y 9(el valor por defecto es 6)

*date: una fecha entre el 1 de enero de 4712 A.C y el 31 de diciembre de 9999 D.C

*boolean: Valido en plsql. Este tipo de dato no existe en Oracle 8i/9i.


miércoles, 11 de abril de 2012

Mejores practicas en PL/SQL

Mejores practicas en PL/SQL

Las practicas en pl/sql, son una gran herramienta para los programadores, ademas le ayudan en la practica en el trabajo con las bases de datos, al hacerlo mucho mas dinamico, esto debido a que hay que declarar las variables, definir los tipos de variables e inicializarlas con algun valor que generalmente es 0 o un valor por defecto, esto siempre se debe realizar o el programa arrojara un error.
  Antes de comenzar con el codigo del programa.
   Lo correcto para empezar con el codigo del programa es:

set serveroutput on
declare
  variable tipo
begin
   codigo
end;

Tenemos varios tipos de variables como varchar2(), integer, %type( es una variable, que trae los datos desde otra variable), % rowtype( trae todos los datos desde una fila de una variable), estas dos variables ahorran mucho trabajo.
   Tambien tenemos variables constantes, son las que no cambian en ningun momento, por ejemplo seria la variable IVA, la cual se mantendria siempre en el mismo valor.

  Y las excepciones que son fundamentales a la hora de que el codigo funciones bien, tenemos muchos tipos de excepciones..

     PL/SQL es un gran entorno de base de datos sobre todo a la hora de construir bloques para utilizarlos como procedimientos o funciones.

  Los programas o paquetes de PL/SQL se pueden almacenar en la base de datos como otro objeto y todos los usuaruis que esten autorizados tienen acceso a estos paquetes, los programas se ejecutan en el servidor para ahorrar recursos al cliente.

jueves, 22 de marzo de 2012

!!!!YA PUEDEN POSTEAR!!!! !!!ASI SABREMOS SI ALGUEN TIENE ALGUN COMENTARIO SOBRE ESTOS POST DE LA CLASE!!!!!!

miércoles, 21 de marzo de 2012

Clase 21/03/2012



--Declarar palabra a una variable
declare
mensage1 varchar2(4) :='Hola';
mensage2 varchar2(5) :='Mundo';

begin
DBMS_OUTPUT.PUT_LINE(mensage1 || ' ' || mensage2);
end
-------------------------------------------------------------
--Creacion de Tabla T1 con el campo E y F y agregar valores...
create table T1(
e integer,
f integer
);

begin
insert into T1 values(1,3);
insert into T1 values(2,4);
end

select *
from T1

declare
    a number;
    b number;
begin
    select e,f into a,b
    from T1
    where e>1; --Este Select Asigna Al Atributo e=>a ----El valor de la columna e que sera asignado es 2
    insert into T1 values(b,a);
end
-------------------------------------------------------------
--utilizacion de IF
declare
    a integer;
begin
    select count(*) into a
    from T1;
    if a>1 then
        dbms_output.put_line('Hay mas de un REGISTRO');
    elsif a=1 then
        dbms_output.put_line('Hay solo un REGISTRO');
        else
                dbms_output.put_line('Hay solo un REGISTRO');
    end if;
end

-------------------------------------------------------------
--Programa que verifica que el numero es par o impar

declare
    a integer;
   
begin
    a:=15;
    if mod(a,2)=0 then ----la variable 'a' toma el valor de '15'
        dbms_output.put_line('El numero es PAR');
    else
        dbms_output.put_line(''El numero es IMPAR);
    end if;
end
-----Seleccion desde la tabla
declare
    a integer;   
begin
    select count(*) into a
        from T1;
    if mod(a,2)=0 then
        dbms_output.put_line('El numero es PAR');
    else
        dbms_output.put_line('El numero es IMPAR');
    end if;
end
---- insertar mensage(msg)
declare
    a integer;
        msg varchar2(5);   
begin
    select count(*) into a
        from T1;
    if mod(a,2)=0 then
           
        msg :='PAR';
    else
        msg :='IMPAR';
    end if;
        dbms_output.put_line('El numero es' || 'msg');
end
-------------------------------------------------------------
--como usar loop (Contador)
declare
    x integer:=0; -- inicializar (CONTADOR EN '0' O EN VALOR DESIGNADO)
begin
    loop
        dbms_output.put_line('Hola Mundo'); --  Menasje a Imprimir en pantalla
                x := x + 1; -- definir el contador
        exit when x > 100; --Declaracion
    end loop;
end
-------------------------------------------------------------

Diferencia entre SQL y PL-SQL

SQL    : NO Procedual

PL-SQL : Lenguaje Precedual

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

Datos:


dbms_output.put_line("imprimir"); ---  Este comando es para imprimir




Repaso:


--Creacion de tabla Autor
create table Autor(
IDAutor integer not null,
NomAutor varchar2(30) not null,
constraint PK_Autor primary key(IDAutor)
);
--Creacion de tabla Libro
create table Libro(
IDLibro integer not null,
IDAutor integer not null,
NomLibro varchar2(30) not null,
constraint PK_Libro primary key(IDLibro),
constraint FK_Libro_Autor foreign key(IDAutor) references Autor
);

-- insertar datos autor

begin
insert into Autor values (100, 'Pablo Neruda');
insert into Autor values (200, 'Gabriel Garcia Marquez');
end

-- insertar datos de libro

begin
insert into libro values (10, 100, 'Confieso que he vivido');
insert into libro values (20, 100, '20 poemas de amor');
insert into libro values (30, 100, 'Versos del Capitan');
insert into libro values (40, 200, 'Cien años de soledad');
insert into libro values (50, 200, 'El amor en los tiempos del Colera');
end

-- modificar tamaño de nombre Libro

alter table Libro
modify NomLibro varchar2(50);

-- Seleccionar Datos de tabla Libro

select *
from Libro;

-- Agregar atributo Fecha de Nacimiento

alter table Autor
add FecNac date;

-- Agregar la fecha de Naciemiento a Autor

update Autor
set FecNac = '12-07-1904'
where NomAutor = 'Pablo Neruda';

update Autor
set FecNac = '06-07-1927'
where NomAutor = 'Gabriel Garcia Marquez';

-- Calcular edad

select NomAutor, round((sysdate - FecNac)/365) as Edad
from Autor
where NomAutor = 'Gabriel Garcia Marquez';

-- seleccionar todos los libros del autor 'Pablo Neruda'

--pregunta1

select *
from Libro l inner join Autor a on l.IDAutor = a.IDAutor
where a.NomAutor = 'Pablo Neruda';

--pregunta2

select *
from Libro l, Autor a
where l.IDAutor=a.IDAutor
and a.NomAutor = 'Pablo Neruda';

--pregunta3

select *
from Libro
where IDAutor = (select IDAutor
                   from Autor
                   where NomAutor = 'Pablo Neruda');

--seleccionar columna de tabla Autor y Libro

select *
from col
where tname = upper('Autor');

select *
from col
where tname = ('LIBRO');

-- Seleccionar autores con libros relacionados con palabra amor

select NomAutor
from Autor
where IDAutor in (select IDAutor
from libro
where lower(NomLibro) like '%amor%')

*Datos de Estudio...

UPPER          : Pasa las letras a Mayusculas.
LOWER        : Pasa las letras a Minusculas
DUAL           : Tabla Comodin
AS('Nombre'): Da el nombre a la tabla seleccionada Dual
DESC            : Describe la estructura de la tabla
 ROUND       : Redondear numeros (sin decimales).
--------------------------------------------------------------------

--Mostrar todas las tablas del sistema
select *
from tab

--------------------------------------------------------------------
--From Dual utilizado para mostrar una tabla sin haberla creado



select upper('abcdef') from dual

select (15*3) + 5 as Tamaño from dual
--------------------------------------------------------------------