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.
martes, 17 de abril de 2012
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.
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
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
--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
--------------------------------------------------------------------
--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
--------------------------------------------------------------------
Suscribirse a:
Entradas (Atom)