select object_type, object_name --esta consulta nos indica que procedimiento hemos creado
from user_objects
where object_type='PROCEDURE' or
object_type='FUNCTION';
--Para eliminar un procedimiento/funcion
drop procedure <procedure_name>;
drop function <function_name>;
--------------------------------------------------------------------------------------------------------------------------create or replace function validaCliente (pNumCliente varchar2) ---Esta funcion sirve para validar al cliente
return boolean
is
vNumCliente Cliente.numCliente%TYPE;
begin
select numCliente into vNumCliente
from Cliente
where numCliente=pNumCliente;
return TRUE;
Exception
When no_data_found then
return FALSE;
end;
--------------------------------------------------------------------------------
PBD35012012 - Curso 005v
sábado, 16 de junio de 2012
Procedimiento verCliente
create table CLIENTE (
NUMCLIENTE CHAR(4) not null,
NOMBRE CHAR(30),
APELLIDO CHAR(30),
DIRECCION CHAR(35),
TELEFONO CHAR(10),
TIPOPREF CHAR(25),
MAXRENT FLOAT,
constraint PK_CLIENTE primary key (NUMCLIENTE)
);
begin
insert into cliente values('CR76','Jhon','Kay','56 High ST,Londonn,SW14EH','0207774563','Departamento',450);
insert into cliente values('CR56','Aline','Stewart','64 Fern Dr, Glasgow G42 OBL','0141324182','Departamento',350);
insert into cliente values('CR74','Mike','Ritchie','63 Well St, Glasgow,G42','0141943742','Casa',750);
insert into cliente values('CR62','Mary','Tregear','12 Park PI, Glasgow, G40QR','0141225742','Departamento',600);
insert into cliente values('CR78','Juan','Kayser','55 High ST,Londonn,SW14EH','0207774564','Departamento',450);
insert into cliente values('CR57','Alicia','Soto','63 Fern Dr,. GlasgowG42 OBL','0141324183','Departamento',350);
insert into cliente values('CR72','Miguel','Torres','62 Well St, Glasgow,G42','0141943740','Casa',750);
insert into cliente values('CR63','Maria','Perez','13 Park PI, Glasgow,G4 0QR','0141225741','Departamento',600);
end;
set serveroutput on
create or replace procedure verCliente (pNumCliente varchar2) is
vNumCliente Cliente.numCliente%Type;
vNombre Cliente.nombre%TYPE;
vApellido Cliente.apellido%TYPE;
begin
select numCliente, nombre, apellido
into vNumCliente, vNombre, vApellido
from Cliente
where numCliente = pNumCliente;
DBMS_OUTPUT.PUT_LINE('NumCliente :' ||vNumCliente||'Nombre :'||trim(vNombre)||' Apellido : '||vApellido);
Exception
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No hemos encontrado al Cliente' || pNumCliente);
end;
--Para invocar un procedimiento basta nombrarlo indicando los parametros requeridos
SET SERVEROUTPUT ON
begin
verCliente('CR78');
end;
show errors;
NUMCLIENTE CHAR(4) not null,
NOMBRE CHAR(30),
APELLIDO CHAR(30),
DIRECCION CHAR(35),
TELEFONO CHAR(10),
TIPOPREF CHAR(25),
MAXRENT FLOAT,
constraint PK_CLIENTE primary key (NUMCLIENTE)
);
begin
insert into cliente values('CR76','Jhon','Kay','56 High ST,Londonn,SW14EH','0207774563','Departamento',450);
insert into cliente values('CR56','Aline','Stewart','64 Fern Dr, Glasgow G42 OBL','0141324182','Departamento',350);
insert into cliente values('CR74','Mike','Ritchie','63 Well St, Glasgow,G42','0141943742','Casa',750);
insert into cliente values('CR62','Mary','Tregear','12 Park PI, Glasgow, G40QR','0141225742','Departamento',600);
insert into cliente values('CR78','Juan','Kayser','55 High ST,Londonn,SW14EH','0207774564','Departamento',450);
insert into cliente values('CR57','Alicia','Soto','63 Fern Dr,. GlasgowG42 OBL','0141324183','Departamento',350);
insert into cliente values('CR72','Miguel','Torres','62 Well St, Glasgow,G42','0141943740','Casa',750);
insert into cliente values('CR63','Maria','Perez','13 Park PI, Glasgow,G4 0QR','0141225741','Departamento',600);
end;
set serveroutput on
create or replace procedure verCliente (pNumCliente varchar2) is
vNumCliente Cliente.numCliente%Type;
vNombre Cliente.nombre%TYPE;
vApellido Cliente.apellido%TYPE;
begin
select numCliente, nombre, apellido
into vNumCliente, vNombre, vApellido
from Cliente
where numCliente = pNumCliente;
DBMS_OUTPUT.PUT_LINE('NumCliente :' ||vNumCliente||'Nombre :'||trim(vNombre)||' Apellido : '||vApellido);
Exception
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No hemos encontrado al Cliente' || pNumCliente);
end;
--Para invocar un procedimiento basta nombrarlo indicando los parametros requeridos
SET SERVEROUTPUT ON
begin
verCliente('CR78');
end;
show errors;
miércoles, 13 de junio de 2012
set serveroutput on
Create Table Cliente( --Creacion de la tabla cliente
NumCliente varchar2(4) not null,
Nombre varchar2(30) ,
Apellido varchar2(30),
Direccion varchar2(35),
Telefono varchar2(15) ,
TipoPref varchar2(25) ,
MaxRent Float,
Constraint PK_CLIENTE PRIMARY KEY (NumCliente)
);
--Ahora insertamos registros
begin
insert into cliente values('CR78' , 'Juan' , 'Kayser', 'Alameda Numero 23' , '9898765' , 'Dpto' , '100000');
insert into cliente values('CR79' , 'Miguel' , 'Sepulveda', 'Mar de Drake N°69' , '69696969' , 'Casa' , '1000000');
insert into cliente values('CR80' , 'Gerald Mauricio' , 'Caris', 'Bellavista N° 23' , '98765432' , 'Dpto' , '900000');
insert into cliente values('CR81' , 'Enrique' , 'Mimó', 'San Ramon N°314' , '99999999' , 'Parcela' , '1000000');
END;
select *from Cliente; --Con este select se ve los ingresos a la Tabla Cliente
---Procedimiento Ver Cliente
Create or Replace Procedure verCliente (pNumCliente varchar2)IS
vNumCliente Cliente.numCliente%TYPE;
vNombre Cliente.nombre%TYPE;
vApellido Cliente.apellido%TYPE;
BEGIN
select numCliente, nombre, apellido
into vNumCliente, vNombre, vApellido
from Cliente
where numCliente=pNumCliente;
DBMS_OUTPUt.PUT_LINE('NumCliente : ' ||vNumCliente || ' Nombre : ' ||trim(vNombre) || ' Apellido : ' ||vApellido);
Exception
When no_data_found then
DBMS_OUTPUT.PUT_LINE( ' NO SE ENCUENTRA EL CLIENTE ' || pNumCliente );
END;
----EL PROCEDIMIENTO verCliente me compilo, pero me arroja un Warning....
show errors;
--Para invocar a un procedimiento:
begin
verCliente('CR79');
END;
show errors;
Create Table Cliente( --Creacion de la tabla cliente
NumCliente varchar2(4) not null,
Nombre varchar2(30) ,
Apellido varchar2(30),
Direccion varchar2(35),
Telefono varchar2(15) ,
TipoPref varchar2(25) ,
MaxRent Float,
Constraint PK_CLIENTE PRIMARY KEY (NumCliente)
);
--Ahora insertamos registros
begin
insert into cliente values('CR78' , 'Juan' , 'Kayser', 'Alameda Numero 23' , '9898765' , 'Dpto' , '100000');
insert into cliente values('CR79' , 'Miguel' , 'Sepulveda', 'Mar de Drake N°69' , '69696969' , 'Casa' , '1000000');
insert into cliente values('CR80' , 'Gerald Mauricio' , 'Caris', 'Bellavista N° 23' , '98765432' , 'Dpto' , '900000');
insert into cliente values('CR81' , 'Enrique' , 'Mimó', 'San Ramon N°314' , '99999999' , 'Parcela' , '1000000');
END;
select *from Cliente; --Con este select se ve los ingresos a la Tabla Cliente
---Procedimiento Ver Cliente
Create or Replace Procedure verCliente (pNumCliente varchar2)IS
vNumCliente Cliente.numCliente%TYPE;
vNombre Cliente.nombre%TYPE;
vApellido Cliente.apellido%TYPE;
BEGIN
select numCliente, nombre, apellido
into vNumCliente, vNombre, vApellido
from Cliente
where numCliente=pNumCliente;
DBMS_OUTPUt.PUT_LINE('NumCliente : ' ||vNumCliente || ' Nombre : ' ||trim(vNombre) || ' Apellido : ' ||vApellido);
Exception
When no_data_found then
DBMS_OUTPUT.PUT_LINE( ' NO SE ENCUENTRA EL CLIENTE ' || pNumCliente );
END;
----EL PROCEDIMIENTO verCliente me compilo, pero me arroja un Warning....
show errors;
--Para invocar a un procedimiento:
begin
verCliente('CR79');
END;
show errors;
martes, 12 de junio de 2012
INICIALIZACION DEL PAQUETE
El paquete se instancia la primera vez que se llama a uno de los subprogramas en el empaquetados, lo que significa que el paquete se lee de disco y se lleva a memoria, y se ejecuta el codigo compilado del subprograma al que se llama. En esta situacion se asigna memoria para todas las variables definidas en el paquete. Cada sesion tendra su propia copia de las variables empaquetadas, asegurando que dos sesiones que ejecuten subprogramas contenidos en el mismo paquete utilicen ubicaciones de memoria diferentes.
En ocaciones, es conveniente ejecutar un codigo de inicializacion la primera vez que se instancia el paquete, lo que puede hacerse añadiendo una seccion de inicializacion en el cuerpo del paquete, despues de todos los demas objetos.
CREATE [OR REPLACE] PACKAGE BODY<NOMBRE_PAQUETE>IS
.............................................................................................................................
BEGIN
--Codigo de Inicializacion
END[<NOMBRE_PAQUETE>];
En ocaciones, es conveniente ejecutar un codigo de inicializacion la primera vez que se instancia el paquete, lo que puede hacerse añadiendo una seccion de inicializacion en el cuerpo del paquete, despues de todos los demas objetos.
CREATE [OR REPLACE] PACKAGE BODY<NOMBRE_PAQUETE>IS
.............................................................................................................................
BEGIN
--Codigo de Inicializacion
END[<NOMBRE_PAQUETE>];
SOBRECARGA DE SUBPROGRAMAS EMPAQUETEADOS
Los procedimientos y funciones dentro de un paquete pueden sobrecargarse, lo que significa que puede haber mas de un procedimiento o una funcion con el mismo nombre, pero con diferenetes parametros. La sobrecarga esta permitida para distinto numero de parametros, o bien, para distinto tipo de familia de dato. No esta permitida para diferentes tipos retornados por una funcion, ni para distintos modos de recepcion de los parametros (IN, OUT, IN OUT).
PAQUETES
Un Paquete es una estructura PL/SQL que permite almacenar juntos varios objetos relacionados entre si. Un Paquete tiene dos partes separadas:
La especificacion y el cuerpo.
Cada una de ellas se almacena independientemente en el diccionario de datos.
Un Paquete es fundamentalmente una seccion delarativa. Cualquier codigo que pueda incluirse en la parte declarativa de un bloque puede incluirse en un paquete, incluidos procedimientos, funciones, cursores y variables.
Los Paquetes no pueden ser llamados o pasados como parametros.
La especificacion del paquete incluye informacion acerca de contenido del paquete. Sin embargo no contiene codigo para ninguno de los procedimientos.
CREATE [OR REPLACE] PACKAGE<NOMBRE_PAQUETE>IS
--Especificaciones de procedimientos
--Especificaciones de funciones
--Declaraciones de variables
--Declaraciones de Excepciones
--Declaraciones de Cursores
END[<NOMBRE_PAQUETE>];
El Cuerpo del Paquete es un Objeto independiente de la cabezera del paquete en el diccionario de datos. El Cuerpo del paquete no puede compilarse hasta que la cabecera del paquete se haya compilado correctamente. El cuerpo contiene el codigo correspondiente a las declaraciones formales de los subprogramas que aparecen en la cabecera del paquete.
CREATE[OR REPLACE] PACKAGE BODY<NOMBRE_PAQUETE>IS
--Declaraciones de los subprogramas
END[<NOMBRE_PAQUETE>];
Cualquier objeto que se declare en la cabecera del paquete, se encuentra dentro de ambito y es visible desde fuera del paquete, siempre que el objeto se distinga precediendole con el nombre del paquete donde se encuentra definido.
La especificacion y el cuerpo.
Cada una de ellas se almacena independientemente en el diccionario de datos.
Un Paquete es fundamentalmente una seccion delarativa. Cualquier codigo que pueda incluirse en la parte declarativa de un bloque puede incluirse en un paquete, incluidos procedimientos, funciones, cursores y variables.
Los Paquetes no pueden ser llamados o pasados como parametros.
La especificacion del paquete incluye informacion acerca de contenido del paquete. Sin embargo no contiene codigo para ninguno de los procedimientos.
CREATE [OR REPLACE] PACKAGE<NOMBRE_PAQUETE>IS
--Especificaciones de procedimientos
--Especificaciones de funciones
--Declaraciones de variables
--Declaraciones de Excepciones
--Declaraciones de Cursores
END[<NOMBRE_PAQUETE>];
El Cuerpo del Paquete es un Objeto independiente de la cabezera del paquete en el diccionario de datos. El Cuerpo del paquete no puede compilarse hasta que la cabecera del paquete se haya compilado correctamente. El cuerpo contiene el codigo correspondiente a las declaraciones formales de los subprogramas que aparecen en la cabecera del paquete.
CREATE[OR REPLACE] PACKAGE BODY<NOMBRE_PAQUETE>IS
--Declaraciones de los subprogramas
END[<NOMBRE_PAQUETE>];
Cualquier objeto que se declare en la cabecera del paquete, se encuentra dentro de ambito y es visible desde fuera del paquete, siempre que el objeto se distinga precediendole con el nombre del paquete donde se encuentra definido.
Suscribirse a:
Entradas (Atom)