SlideShare una empresa de Scribd logo
1 de 3
Crear tablas .-
create tablecontrol(
usernamevarchar(20),
fecha date,
operacion varchar2(30))
create tableproductos(
idproducto number(4) primary keynot null,
nombreProductovarchar2(40),
PrecioProducto number(4),
cantidad number(4))
inserter datos.-
insert into productos values(6,'maiz','50','20');
insert into productos values(7,'papa','70','10');
insert into productos values (8,'arroz','30','15');
insert into productos values(9,'lechuga','40','30');
insert into productos values (5,'quinua','90','40');
update productos set PrecioProducto=
PrecioProducto+100wherecantidad>10;
delete productos whereidproductoin(6,7,8,9)
select*from productos
select*from control
-- crear procedures
create orreplace proceduresp_insertar_productos(
v_idproducto productos.idproducto%type,
v_nombreproductoproductos.nombreproducto%type,
v_precioproductoproductos.precioproducto%type,
v_cantidad productos.cantidad%type)
as
begin
insert intoproductos values
(v_idproducto,v_nombreproducto,v_precioproducto,v_can
tidad);
commit;
end sp_insertar_productos;
----
create orreplace proceduresp_actualiza_productos (
v_idproducto productos.idproducto%type,
v_nombreproductoproductos.nombreproducto%type,
v_precioproductoproductos.precioproducto%type,
v_cantidad productos.cantidad%type)
as
begin
update productos set
nombreproducto=v_nombreproducto,
precioproducto=v_precioproducto,
cantidad=v_cantidad
where idproducto=v_idproducto;
commit;
end sp_actualiza_productos;
create orreplace proceduresp_elimina_producto(
v_idproducto productos.idproducto%type)
as
begin
deletefrom productos whereidproducto=v_idproducto;
commit;
end;
create orreplace proceduresp_elimina_producto(
v_idproducto productos.idproducto%type)
as
begin
deletefrom productos whereidproducto=v_idproducto;
commit;
end;
select*from productos
begin
sp_insertar_productos(6,'pan','50','7');
end;
begin
sp_actualiza_productos('2','papa2','80','20');
end;
begin
sp_elimina_producto(6);
end;
paquetes
cabecera
create orreplace package pkg_productos as
procedure sp_insertar_productos(
v_idproductoproductos.idproducto%type,
v_nombreproducto
productos.nombreproducto%type,
v_precioproducto
productos.precioproducto%type,
v_cantidad productos.cantidad%type);
procedure sp_actualiza_productos (
v_idproductoproductos.idproducto%type,
v_nombreproducto
productos.nombreproducto%type,
v_precioproducto
productos.precioproducto%type,
v_cantidad productos.cantidad%type);
procedure sp_elimina_producto(
v_idproducto productos.idproducto%type);
end pkg_productos;
cuerpo o body
create orreplace package body pkg_productos as
procedure sp_insertar_productos(
v_idproducto productos.idproducto%type,
v_nombreproducto
productos.nombreproducto%type,
v_precioproducto
productos.precioproducto%type,
v_cantidadproductos.cantidad%type)
as
begin
insert into productos values
(v_idproducto,v_nombreproducto,v_precioproducto,v_can
tidad);
commit;
end sp_insertar_productos;
------
procedure sp_actualiza_productos (
v_idproducto productos.idproducto%type,
v_nombreproducto
productos.nombreproducto%type,
v_precioproducto
productos.precioproducto%type,
v_cantidadproductos.cantidad%type)
as
begin
update productos set
nombreproducto=v_nombreproducto,
precioproducto=v_precioproducto,
cantidad=v_cantidad
where idproducto=v_idproducto;
commit;
end sp_actualiza_productos;
--------------
procedure sp_elimina_producto(
v_idproducto productos.idproducto%type)
as
begin
delete from productos where
idproducto=v_idproducto;
commit;
end;
end pkg_productos;
-- cursor implicito
declare
v_nombreproductoproductos.nombreproducto%type;
v_precioproductoproductos.precioproducto%type;
v_cantidad productos.cantidad%type;
begin
selectnombreproducto, precioproducto, cantidad
into v_nombreproducto,v_precioproducto,v_cantidad
from productos
where idproducto='5';
dbms_output.put_line(v_nombreproducto||'
'||v_precioproducto||''||v_cantidad);
end;
--cursor exlicito
declare
cursor consultar is
select*from productos;
begin
for listarin consultar loop
dbms_output.put_line( listar.idproducto||'
'||listar.nombreproducto||''||listar.precioproducto||'
'||listar.cantidad );
end loop;
end;
Creacióny Usode DBLinks en Oracle
Un DatabaseLink (DBLink) enOracle es untipo deobjeto
que permiterealizar una conexióndesdeuna basede
datos a otra. Su principal objetivo es ocultar el detallede
los parámetros deconexiónnecesarios,facilitándonos un
sencillo accesoa los recursos disponibles enotras bases de
datos, independientementedequeestas se encuentren
instaladas en el mismo servidoro no.
Aunque es unconceptosencillode entender, suelegenerar
bastanteconfusión cuandouno se tropieza con él por
primera vez, sobre todo porquehayvarios elementos
involucrados en su creación y suelenplantearse dudas
acerca de en québasede datos concreta,de entre las dos
que se quierenconectar,tienen que crearsedichos
elementos.
Supongamos que tenemos dos bases dedatos: productos y
usuarios. La base dedatos deproductos almacena el
inventariode una empresa,conlos detalles de los artículos
que oferta y entre los queseincluyeel tipode público al
que se dirigecada artículo en particular. Por supartela
base de datos deusuarios contiene unficha detallada de
cada uno delos usuarios registrados en una weben la que
se incluye la edad,sexoy lugar deresidencia. En un
determinadomomento,la webdeciderealizar un estudio
para comprobar queproductodentro delos ofertados por
la empresa serían delagrado desus usuarios en función de
sus datos personales. Para realizar tal estudiodecide
contrastar la información delas dos bases dedatos,y para
ello deciden utilizar unDBLinkquepermita consultar datos
de los productos desdela basededatos deusuarios.
¿Cuales serían los pasos a seguir?
En primer lugar, en la basede datos de productos, debería
crearseunusuarionuevo,queserá elqueseutilice para
acceder a los datos deproductos.Dichousuarioserá un
usuarionormal deOracle,y debería tener como mínimo
permisopara conectar einiciar sesión enla basededatos
de productos, y por supuesto para acceder a los objetos
(tablas, vistas,...) quecontenganlos datos quesequieren
poder consultar desdela base dedatos deusuarios.En un
caso bastantetípico deeste tipode accesos lo quesehará
será crear un rolepara aglutinaren él los permisos, envez
de asignárselos directamentealusuario, y crear vistas
específicas para los datos quedeben poder consultarse, en
vez de permitirquepueda accedersedirectamentea toda
la basede datos.
CREATE ROLErol;
GRANTCONNECTTO rol;
GRANTSELECTON vista1TO rol;
GRANT SELECTON vista2TO rol;
CREATE USER usuarioIDENTIFIED BY clave;
GRANTrol TO usuario;
Y en segundo lugar, enla base dedatos deusuarios,
deberá crearseeldatabaselink para accedera la basede
datos deproductos utilizando elusuario y clave recién
creados enla otra basede datos.
CREATE PUBLIC DATABASELINK db_productos
CONNECTTO usuario
IDENTIFIED BY clave
USING 'connect_string_productos';
Una vez creado el DBLink puedeempezar a usarsesin más
en la base dedatos de usuarios con la siguiente sintaxis:
SELECT* FROMvista1@db_productos;
Aunque para simplificar las sentencias sepuedecrear un
sinónimo enla basededatos deusuarios:
CREATE PUBLIC SYNONYMvista1_productos FOR
vista1@db_productos;
De forma quepueda escribirse:
SELECT* FROMvista1_productos;

Más contenido relacionado

Destacado

Transacciones de base de datos en ORACLE
Transacciones de base de datos en ORACLETransacciones de base de datos en ORACLE
Transacciones de base de datos en ORACLE
90040112
 
Sistemas operativos memoria virtual
Sistemas operativos memoria virtualSistemas operativos memoria virtual
Sistemas operativos memoria virtual
jolhaln
 
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSINTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
itsl
 
Introducción a SOA
Introducción a SOAIntroducción a SOA
Introducción a SOA
rdiegoc
 

Destacado (20)

Ansi sparc-josebahamonde
Ansi sparc-josebahamondeAnsi sparc-josebahamonde
Ansi sparc-josebahamonde
 
Integridad de base de datos
Integridad de base de datosIntegridad de base de datos
Integridad de base de datos
 
Transacciones de base de datos en ORACLE
Transacciones de base de datos en ORACLETransacciones de base de datos en ORACLE
Transacciones de base de datos en ORACLE
 
Sistemas operativos memoria virtual
Sistemas operativos memoria virtualSistemas operativos memoria virtual
Sistemas operativos memoria virtual
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencia
 
Tablespaces En Oracle
Tablespaces En OracleTablespaces En Oracle
Tablespaces En Oracle
 
Bases de Datos II: El entorno
Bases de Datos II: El entornoBases de Datos II: El entorno
Bases de Datos II: El entorno
 
Niveles de un sgbd
Niveles de un sgbdNiveles de un sgbd
Niveles de un sgbd
 
Gestion De Memoria
Gestion De MemoriaGestion De Memoria
Gestion De Memoria
 
Linux Programacion en Shell
Linux Programacion en ShellLinux Programacion en Shell
Linux Programacion en Shell
 
INTEGRIDAD DE DATOS
INTEGRIDAD DE DATOSINTEGRIDAD DE DATOS
INTEGRIDAD DE DATOS
 
Los gestores de base de datos
Los gestores de base de datosLos gestores de base de datos
Los gestores de base de datos
 
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSINTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
 
Introducción a SOA
Introducción a SOAIntroducción a SOA
Introducción a SOA
 
Gestion de Memoria
Gestion de MemoriaGestion de Memoria
Gestion de Memoria
 
Paginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónPaginación, Segmentación y Fragmentación
Paginación, Segmentación y Fragmentación
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
IntroduccióN A Los Sistemas Operativos De Red
IntroduccióN A Los Sistemas Operativos De RedIntroduccióN A Los Sistemas Operativos De Red
IntroduccióN A Los Sistemas Operativos De Red
 
Sistemas operativos presentacion diapositivas
Sistemas operativos presentacion diapositivasSistemas operativos presentacion diapositivas
Sistemas operativos presentacion diapositivas
 
Administración de Oracle - Tema 4 - Interacción con la Base de Datos
Administración de Oracle - Tema 4 - Interacción con la Base de DatosAdministración de Oracle - Tema 4 - Interacción con la Base de Datos
Administración de Oracle - Tema 4 - Interacción con la Base de Datos
 

Similar a Resumen oracle, procedure, triggres

Guzman cusihunca fredy_taller _my_sql_n1
Guzman cusihunca fredy_taller _my_sql_n1Guzman cusihunca fredy_taller _my_sql_n1
Guzman cusihunca fredy_taller _my_sql_n1
Tigger_Fred
 
Rolando kalla chacon taller 1 my sql console
Rolando kalla chacon taller  1 my sql consoleRolando kalla chacon taller  1 my sql console
Rolando kalla chacon taller 1 my sql console
Skins
 
Rolando kalla chacon taller 1 my sql console
Rolando kalla chacon taller  1 my sql consoleRolando kalla chacon taller  1 my sql console
Rolando kalla chacon taller 1 my sql console
Skins
 

Similar a Resumen oracle, procedure, triggres (20)

Guía Practica conexión BD 2021
Guía Practica conexión BD  2021Guía Practica conexión BD  2021
Guía Practica conexión BD 2021
 
Tutorial MIneria de datos en sql server
Tutorial  MIneria de datos en sql serverTutorial  MIneria de datos en sql server
Tutorial MIneria de datos en sql server
 
Informe_Base de datos
Informe_Base de datos Informe_Base de datos
Informe_Base de datos
 
Guzman cusihunca fredy_taller _my_sql_n1
Guzman cusihunca fredy_taller _my_sql_n1Guzman cusihunca fredy_taller _my_sql_n1
Guzman cusihunca fredy_taller _my_sql_n1
 
Rolando kalla chacon taller 1 my sql console
Rolando kalla chacon taller  1 my sql consoleRolando kalla chacon taller  1 my sql console
Rolando kalla chacon taller 1 my sql console
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Aplicaciones para sistemas distribuidos slide
Aplicaciones para sistemas distribuidos slideAplicaciones para sistemas distribuidos slide
Aplicaciones para sistemas distribuidos slide
 
Informededesarrollodebasededatos andres
Informededesarrollodebasededatos andresInformededesarrollodebasededatos andres
Informededesarrollodebasededatos andres
 
Como crear una base de datos (mysql)
Como crear una base de datos (mysql)Como crear una base de datos (mysql)
Como crear una base de datos (mysql)
 
Proyecto de sistemas de información
Proyecto de sistemas de informaciónProyecto de sistemas de información
Proyecto de sistemas de información
 
Intro BBDD SQL Server.pptx
Intro BBDD SQL Server.pptxIntro BBDD SQL Server.pptx
Intro BBDD SQL Server.pptx
 
Reportes con crystalreport
Reportes con crystalreportReportes con crystalreport
Reportes con crystalreport
 
Rolando kalla chacon taller 1 my sql console
Rolando kalla chacon taller  1 my sql consoleRolando kalla chacon taller  1 my sql console
Rolando kalla chacon taller 1 my sql console
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
 
Trabajo raul
Trabajo raulTrabajo raul
Trabajo raul
 
Carrito20110429
Carrito20110429Carrito20110429
Carrito20110429
 
Primeros pasos con Talent Open Studio TOS : Importando datos
Primeros pasos con Talent Open Studio TOS : Importando datosPrimeros pasos con Talent Open Studio TOS : Importando datos
Primeros pasos con Talent Open Studio TOS : Importando datos
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 
Crear base de datos en FireBase.js .pdf
Crear base de datos en FireBase.js .pdfCrear base de datos en FireBase.js .pdf
Crear base de datos en FireBase.js .pdf
 
Actualizando bases de datos
Actualizando bases de datosActualizando bases de datos
Actualizando bases de datos
 

Último

ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
vladimirpaucarmontes
 

Último (20)

MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOSMANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
 
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdfSesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSIONCALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 
Gestion de proyectos para el control y seguimiento
Gestion de proyectos para el control  y seguimientoGestion de proyectos para el control  y seguimiento
Gestion de proyectos para el control y seguimiento
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - Ejercicios
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 

Resumen oracle, procedure, triggres

  • 1. Crear tablas .- create tablecontrol( usernamevarchar(20), fecha date, operacion varchar2(30)) create tableproductos( idproducto number(4) primary keynot null, nombreProductovarchar2(40), PrecioProducto number(4), cantidad number(4)) inserter datos.- insert into productos values(6,'maiz','50','20'); insert into productos values(7,'papa','70','10'); insert into productos values (8,'arroz','30','15'); insert into productos values(9,'lechuga','40','30'); insert into productos values (5,'quinua','90','40'); update productos set PrecioProducto= PrecioProducto+100wherecantidad>10; delete productos whereidproductoin(6,7,8,9) select*from productos select*from control -- crear procedures create orreplace proceduresp_insertar_productos( v_idproducto productos.idproducto%type, v_nombreproductoproductos.nombreproducto%type, v_precioproductoproductos.precioproducto%type, v_cantidad productos.cantidad%type) as begin insert intoproductos values (v_idproducto,v_nombreproducto,v_precioproducto,v_can tidad); commit; end sp_insertar_productos; ---- create orreplace proceduresp_actualiza_productos ( v_idproducto productos.idproducto%type, v_nombreproductoproductos.nombreproducto%type, v_precioproductoproductos.precioproducto%type, v_cantidad productos.cantidad%type) as begin update productos set nombreproducto=v_nombreproducto, precioproducto=v_precioproducto, cantidad=v_cantidad where idproducto=v_idproducto; commit; end sp_actualiza_productos; create orreplace proceduresp_elimina_producto( v_idproducto productos.idproducto%type) as begin deletefrom productos whereidproducto=v_idproducto; commit; end; create orreplace proceduresp_elimina_producto( v_idproducto productos.idproducto%type) as begin deletefrom productos whereidproducto=v_idproducto; commit; end; select*from productos begin sp_insertar_productos(6,'pan','50','7'); end; begin sp_actualiza_productos('2','papa2','80','20'); end; begin sp_elimina_producto(6); end; paquetes cabecera create orreplace package pkg_productos as procedure sp_insertar_productos( v_idproductoproductos.idproducto%type, v_nombreproducto productos.nombreproducto%type, v_precioproducto productos.precioproducto%type, v_cantidad productos.cantidad%type); procedure sp_actualiza_productos ( v_idproductoproductos.idproducto%type, v_nombreproducto productos.nombreproducto%type, v_precioproducto productos.precioproducto%type, v_cantidad productos.cantidad%type); procedure sp_elimina_producto( v_idproducto productos.idproducto%type); end pkg_productos;
  • 2. cuerpo o body create orreplace package body pkg_productos as procedure sp_insertar_productos( v_idproducto productos.idproducto%type, v_nombreproducto productos.nombreproducto%type, v_precioproducto productos.precioproducto%type, v_cantidadproductos.cantidad%type) as begin insert into productos values (v_idproducto,v_nombreproducto,v_precioproducto,v_can tidad); commit; end sp_insertar_productos; ------ procedure sp_actualiza_productos ( v_idproducto productos.idproducto%type, v_nombreproducto productos.nombreproducto%type, v_precioproducto productos.precioproducto%type, v_cantidadproductos.cantidad%type) as begin update productos set nombreproducto=v_nombreproducto, precioproducto=v_precioproducto, cantidad=v_cantidad where idproducto=v_idproducto; commit; end sp_actualiza_productos; -------------- procedure sp_elimina_producto( v_idproducto productos.idproducto%type) as begin delete from productos where idproducto=v_idproducto; commit; end; end pkg_productos; -- cursor implicito declare v_nombreproductoproductos.nombreproducto%type; v_precioproductoproductos.precioproducto%type; v_cantidad productos.cantidad%type; begin selectnombreproducto, precioproducto, cantidad into v_nombreproducto,v_precioproducto,v_cantidad from productos where idproducto='5'; dbms_output.put_line(v_nombreproducto||' '||v_precioproducto||''||v_cantidad); end; --cursor exlicito declare cursor consultar is select*from productos; begin for listarin consultar loop dbms_output.put_line( listar.idproducto||' '||listar.nombreproducto||''||listar.precioproducto||' '||listar.cantidad ); end loop; end;
  • 3. Creacióny Usode DBLinks en Oracle Un DatabaseLink (DBLink) enOracle es untipo deobjeto que permiterealizar una conexióndesdeuna basede datos a otra. Su principal objetivo es ocultar el detallede los parámetros deconexiónnecesarios,facilitándonos un sencillo accesoa los recursos disponibles enotras bases de datos, independientementedequeestas se encuentren instaladas en el mismo servidoro no. Aunque es unconceptosencillode entender, suelegenerar bastanteconfusión cuandouno se tropieza con él por primera vez, sobre todo porquehayvarios elementos involucrados en su creación y suelenplantearse dudas acerca de en québasede datos concreta,de entre las dos que se quierenconectar,tienen que crearsedichos elementos. Supongamos que tenemos dos bases dedatos: productos y usuarios. La base dedatos deproductos almacena el inventariode una empresa,conlos detalles de los artículos que oferta y entre los queseincluyeel tipode público al que se dirigecada artículo en particular. Por supartela base de datos deusuarios contiene unficha detallada de cada uno delos usuarios registrados en una weben la que se incluye la edad,sexoy lugar deresidencia. En un determinadomomento,la webdeciderealizar un estudio para comprobar queproductodentro delos ofertados por la empresa serían delagrado desus usuarios en función de sus datos personales. Para realizar tal estudiodecide contrastar la información delas dos bases dedatos,y para ello deciden utilizar unDBLinkquepermita consultar datos de los productos desdela basededatos deusuarios. ¿Cuales serían los pasos a seguir? En primer lugar, en la basede datos de productos, debería crearseunusuarionuevo,queserá elqueseutilice para acceder a los datos deproductos.Dichousuarioserá un usuarionormal deOracle,y debería tener como mínimo permisopara conectar einiciar sesión enla basededatos de productos, y por supuesto para acceder a los objetos (tablas, vistas,...) quecontenganlos datos quesequieren poder consultar desdela base dedatos deusuarios.En un caso bastantetípico deeste tipode accesos lo quesehará será crear un rolepara aglutinaren él los permisos, envez de asignárselos directamentealusuario, y crear vistas específicas para los datos quedeben poder consultarse, en vez de permitirquepueda accedersedirectamentea toda la basede datos. CREATE ROLErol; GRANTCONNECTTO rol; GRANTSELECTON vista1TO rol; GRANT SELECTON vista2TO rol; CREATE USER usuarioIDENTIFIED BY clave; GRANTrol TO usuario; Y en segundo lugar, enla base dedatos deusuarios, deberá crearseeldatabaselink para accedera la basede datos deproductos utilizando elusuario y clave recién creados enla otra basede datos. CREATE PUBLIC DATABASELINK db_productos CONNECTTO usuario IDENTIFIED BY clave USING 'connect_string_productos'; Una vez creado el DBLink puedeempezar a usarsesin más en la base dedatos de usuarios con la siguiente sintaxis: SELECT* FROMvista1@db_productos; Aunque para simplificar las sentencias sepuedecrear un sinónimo enla basededatos deusuarios: CREATE PUBLIC SYNONYMvista1_productos FOR vista1@db_productos; De forma quepueda escribirse: SELECT* FROMvista1_productos;