Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: definir procedimiento dentro de package
Experto: neosys
Valoración: 5
Fecha: 16/06/2008


definir procedimiento dentro de package
hola, uso oracle10g express edition, con el cual me estan enseñando a usar packages. solamente debo insertar informacion dentro de las tablas, mediante packages, yo lo hice asi: CREATE TABLE rentacar(rolemp varchar2(15)PRIMARY KEY, nombre varchar2(30), direccion varchar2(30), telefono varchar2(15), email varchar2(30)); CREATE TABLE cliente (rutc varchar2(15)PRIMARY KEY, nombre varchar2(30), direccion varchar2(30), telefono varchar2(30), email varchar2(30)); CREATE TABLE trabajador(rutt varchar2(15)PRIMARY KEY, nombre varchar2(30), direccion varchar2(30), telefono varchar2(30), rolemp varchar2(15),FOREIGN KEY(rolemp)REFERENCES rentacar); CREATE TABLE vehiculo(patente varchar2(10)PRIMARY KEY, marca varchar2(30), modelo varchar2(30), rolemp varchar2(15),FOREIGN KEY(rolemp)REFERENCES rentacar); CREATE TABLE caracteristicas(patente varchar2(10),color varchar2(30), audio varchar2(30), traccion varchar2(30), precioDiario number, FOREIGN KEY(patente)REFERENCES vehiculo); CREATE TABLE contrato(rutc varchar2(15), rutt varchar2(15),patente varchar2(10), fechaInicio varchar2(20), fechaDevolucion varchar2(20),FOREIGN KEY(rutc)REFERENCES cliente,FOREIGN KEY(rutt)REFERENCES trabajador,FOREIGN KEY(patente)REFERENCES vehiculo); -- CABECERA CREATE OR REPLACE PACKAGE insertarInformacion AS PROCEDURE insertarRentacar(in_rentacar IN rentacar%ROWTYPE); PROCEDURE insertarCliente(in_cliente IN cliente%ROWTYPE); PROCEDURE insertarTrabajador(in_trabajador IN trabajador%ROWTYPE); PROCEDURE insertarVehiculo(in_vehiculo IN vehiculo%ROWTYPE); PROCEDURE insertarCaracteristicas(in_caracteristicas caracteristicas%ROWTYPE); PROCEDURE insertarContrato(in_contrato IN contrato%ROWTYPE); END insertarInformacion; -- CUERPO CREATE OR REPLACE PACKAGE BODY insertarInformacion AS PROCEDURE insertarRentacar(in_rentacar IN rentacar%ROWTYPE)IS BEGIN INSERT INTO rentacar VALUES(in_rentacar.rol, in_rentacar.nombre, in_rentacar.direccion, in_rentacar.telefono, in_rentacar.email); END insertarRentacar; PROCEDURE insertarCliente(in_cliente IN cliente%ROWTYPE)IS BEGIN INSERT INTO cliente VALUES(in_cliente.rutc, in_cliente.nombre, in_cliente.direccion, in_cliente.telefono, in_cliente.email); END insertarCliente; PROCEDURE insertarTrabajador(in_trabajador IN trabajador%ROWTYPE)IS BEGIN INSERT INTO trabajador VALUES(in_trabajador.rutt, in_trabajador.nombre, in_trabajador.direccion, in_trabajador.telefono, in_trabajador.rolemp); END insertarTrabajador; PROCEDURE insertarVehiculo(in_vehiculo IN vehiculo%ROWTYPE)IS BEGIN INSERT INTO vehiculo VALUES(in_vehiculo.patente, in_vehiculo.marca, in_vehiculo.modelo, in_vehiculo.rolemp); END insertarVehiculo; PROCEDURE insertarCaracteristicas(in_caracteristicas caracteristicas%ROWTYPE)IS BEGIN INSERT INTO caracteristicas VALUES(in_caracteristicas.patente, in_caracteristicas.color, in_caracteristicas.audio, in_caracteristicas.traccion, in_caracteristicas.precioDiario); END insertarCaracteristicas; PROCEDURE insertarContrato(in_contrato IN contrato%ROWTYPE)IS BEGIN INSERT INTO contrato VALUES(in_contrato.rutc, in_contrato.rutt, in_contrato.codigo, in_contrato.patente, in_contrato.fechaInicio, in_contrato.fechaDevolucion); END insertarContrato; END insertarInformacion; al crear las tablas, y al ejecutar la cabecera del package no tengo problemas, pero al ejecutar el cuerpo del package (selecciono desde -- CUERPO hasta el final del bloque) me sale el siguiente error: 'ERROR en línea 25: PL/SQL: SQL Statement ignored' revise la linea 25 pero no encuentro el error :S ojala me puedas ayudar con eso =D de antemano muchas gracias

definir procedimiento dentro de package
Hola, Tenias errores en la codificación ... Te paso como debes de hacerlo he indicando los errores que tenias ... NOTA : Se supone que las TABLAS están bien definidas (con las columnas adecuadas). CREATE OR REPLACE PACKAGE insertarInformacion AS PROCEDURE insertarRentacar(in_rentacar IN rentacar%ROWTYPE); PROCEDURE insertarCliente(in_cliente IN cliente%ROWTYPE); PROCEDURE insertarTrabajador(in_trabajador IN trabajador%ROWTYPE); PROCEDURE insertarVehiculo(in_vehiculo IN vehiculo%ROWTYPE); PROCEDURE insertarCaracteristicas(in_caracteristicas caracteristicas%ROWTYPE); PROCEDURE insertarContrato(in_contrato IN contrato%ROWTYPE); END insertarInformacion; / CREATE OR REPLACE PACKAGE BODY insertarInformacion AS PROCEDURE insertarRentacar(in_rentacar IN rentacar%ROWTYPE)IS BEGIN INSERT INTO rentacar VALUES(in_rentacar.[b]rolemp[/b], in_rentacar.nombre, in_rentacar.direccion, in_rentacar.telefono, in_rentacar.email); END insertarRentacar; PROCEDURE insertarCliente(in_cliente IN cliente%ROWTYPE)IS BEGIN INSERT INTO cliente VALUES(in_cliente.rutc, in_cliente.nombre, in_cliente.direccion, in_cliente.telefono, in_cliente.email); END insertarCliente; PROCEDURE insertarTrabajador(in_trabajador IN trabajador%ROWTYPE)IS BEGIN INSERT INTO trabajador VALUES(in_trabajador.rutt, in_trabajador.nombre, in_trabajador.direccion, in_trabajador.telefono, in_trabajador.rolemp); END insertarTrabajador; PROCEDURE insertarVehiculo(in_vehiculo IN vehiculo%ROWTYPE)IS BEGIN INSERT INTO vehiculo VALUES(in_vehiculo.patente, in_vehiculo.marca, in_vehiculo.modelo, in_vehiculo.rolemp); END insertarVehiculo; PROCEDURE insertarCaracteristicas(in_caracteristicas caracteristicas%ROWTYPE)IS BEGIN INSERT INTO caracteristicas VALUES(in_caracteristicas.patente, in_caracteristicas.color, in_caracteristicas.audio, in_caracteristicas.traccion, in_caracteristicas.precioDiario); END insertarCaracteristicas; PROCEDURE insertarContrato(in_contrato IN contrato%ROWTYPE)IS BEGIN INSERT INTO contrato VALUES(in_contrato.rutc, in_contrato.rutt, [b]--, in_contrato.codigo,[/b] in_contrato.patente, in_contrato.fechaInicio, in_contrato.fechaDevolucion); END insertarContrato; END insertarInformacion; / Lo marcado en 'negrita' eran errores de nombre de columnas y el que además lo añado como comentario, es una columna que no está definida en la tabla!!! Un Saludo Ramón

Pregunta finalizada. Valoración: 5
muchas gracias por tu respuesta =D me da la impresin de q a ojos expertos como los tuyos, el error fue muy facil de encontrar, pero conmigo no hubo caso xD muchas gracias nuevamente =D adios


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/bases-de-datos/oracle/respuestas/1862174/definir-procedimiento-dentro-de-package