Problemilla en SQL DEVELOPER

Iniciado por birdez, 5 Junio 2012, 10:47 AM

0 Miembros y 2 Visitantes están viendo este tema.

birdez

Buenos días a todos antes de nada quiero comentaros que no se si este el el lugar correcto para poner este mensaje sino es así lo siento y ponerlo donde debería estar, gracias.

Pues bien mi problema es el siguiente tengo que hacer un proyecto con SQL Developer y Forms.

HE usado el Toad Data Molder para hacer las tablas y las relaciones, con este mismo programa he creado el Script para que me cree las tablas. A continuación cree un archivo para insertar los datos en cada tabla, creo que los datos están bien puestos en cada campo esta lo que corresponde, también hice un usuario el cual esta en un tablespace que cree y tiene distintos roles como:



grant create session  to Usuario;

grant create table, create view, create procedure, create trigger, create sequence to Usuario;


(MI PROBLEMA) En el SQL Developer creo el usuario lo conecto y ejecuto la creación de tablas, hasta ahí todo va bien, pero cuando ejecuto el archivo para insertar los datos me da todo errores, a la hora de insertar clientes me dice esto:

          SQL Error: ORA-00913: demasiados valores

y a la hora de insertar el resto de las cosas me sale esto:

          SQL Error: ORA-00942: la tabla o vista no existe

no entiendo bien porque sucede esto ya que las tablas me aparecen en el Developer pero con los campos vacíos ya que no me los a rellenado.


Si necesitáis algo mas de información pedirla, como por ejemplo si queréis que os pase el código de los Script, la inserción de los datos o la creación del usuario.


Espero que alguien pueda ayudarme muchas gracias por leer el mensaje.
Un saludo.

Toxico

Hola,
1.- Asegúrate que las inserciones sean explicitas ejem:
insert into {campos} values {valores}
2.- Cuando vas a insertar registros de tipo fecha asegúrate que por cada valor que se vaya a insertar en un campo de tipo fecha tenga la funcion to_date.
3.- Asegúrate que cada instrucción termine con ;
4.- Si estas insertando un campo de tipo numérico verifica si el separador decimal es "." o ",", si es "," puede que se este identificando como otro campo por eso el mensaje de que estas insertando mas campos.

5.- te sale el mensaje que la tabla no existe por que si es un script grande y ha fallado en alguna parte no se ha terminado de ejecutar y no se han creado las tablas

6.- Asegurate tambien que las tablas no las este creando con "", ya que esto hace que cuando se realice la consulta a las tablas sea case sensitive, si nada de esto es postea la estructura de la tabla y un insert que tengas para poder ayudarte mejor

Pd: mis disculpas si me explico como el culo   ;-)

solo el principio....


birdez

te poste las tablas xq la verdad q mire lo q me dijiste  y no encontre nada erroneo pro se me puede a ver pasado xD


Crear tablas:





/*
Created 04/06/2012
Modified 05/06/2012
Project
Model
Company
Author
Version
Database Oracle 10g
*/


Drop table "Reparto"
/
Drop table "Vehiculo"
/
Drop table "Comercial"
/
Drop table "Pedido"
/
Drop table "Productos"
/
Drop table "Cliente"
/


-- Create Types section


-- Create Tables section


Create table "Cliente" (
"DNI_Cliente" Varchar2 (9) NOT NULL ,
"Nombre_Propietario" Varchar2 (30),
"Nombre_Empresa" Varchar2 (50) NOT NULL ,
"Direcci_n" Varchar2 (50) NOT NULL ,
"Localidad" Varchar2 (30) NOT NULL ,
"Telefono" Varchar2 (9),
primary key ("DNI_Cliente")
)
/

Create table "Productos" (
"Cod_Producto" Varchar2 (10) NOT NULL ,
"Descripci_n" Varchar2 (50) NOT NULL ,
"Peso_Cantidad" Varchar2 (30),
"Unidades_minimas" Number,
"Precio_Unidad" Number(5,2),
primary key ("Cod_Producto")
)
/

Create table "Pedido" (
"Cod_Pedido" Number NOT NULL ,
"Fecha_pedido" Varchar2 (30) NOT NULL ,
"DNI_Cliente" Varchar2 (9) NOT NULL ,
"Cod_Producto" Varchar2 (10) NOT NULL ,
primary key ("Cod_Pedido","Fecha_pedido")
)
/

Create table "Comercial" (
"DNI_Comercial" Varchar2 (9) NOT NULL ,
"Nombre_Comercial" Varchar2 (30),
"Apellidos_Comercial" Varchar2 (30),
"Matricula" Varchar2 (7) NOT NULL ,
"Telefono" Varchar2 (9),
"Direcci_n" Varchar2 (50),
primary key ("DNI_Comercial","Matricula")
)
/

Create table "Vehiculo" (
"Matricula" Varchar2 (7) NOT NULL ,
"Marca" Varchar2 (30),
"Modelo" Varchar2 (30),
primary key ("Matricula")
)
/

Create table "Reparto" (
"Cod_Pedido" Number NOT NULL ,
"Fecha_pedido" Varchar2 (30) NOT NULL ,
"DNI_Comercial" Varchar2 (9) NOT NULL ,
"Matricula" Varchar2 (7) NOT NULL ,
primary key ("Cod_Pedido","Fecha_pedido","DNI_Comercial","Matricula")
)
/


-- Create Foreign keys section

Alter table "Pedido" add  foreign key ("DNI_Cliente") references "Cliente" ("DNI_Cliente")
/

Alter table "Pedido" add  foreign key ("Cod_Producto") references "Productos" ("Cod_Producto")
/

Alter table "Reparto" add  foreign key ("Cod_Pedido","Fecha_pedido") references "Pedido" ("Cod_Pedido","Fecha_pedido")
/

Alter table "Reparto" add  foreign key ("DNI_Comercial","Matricula") references "Comercial" ("DNI_Comercial","Matricula")
/

Alter table "Comercial" add  foreign key ("Matricula") references "Vehiculo" ("Matricula")
/


-- Create Object Tables section


-- Create XMLType Tables section


-- Create Functions section


-- Create Sequences section


-- Create Packages section


-- Create Synonyms section


-- Create Table comments section


-- Create Attribute comments section









Insertar datos:



CREATE SEQUENCE codigosped
START WITH 1 INCREMENT BY 1 MAXVALUE 1000000;

CREATE SEQUENCE codigosrep
START WITH 1 INCREMENT BY 1 MAXVALUE 1000000;


INSERT INTO Cliente
VALUES ('1257890B', 'Pepe','Casa Pepin','C/ Langreo nº 8','Oviedo','985725566');
INSERT INTO Cliente
VALUES ('7894526C','Amancio','Llagar del Prao','C/ Tenderina nº 15','Oviedo','985724412');
INSERT INTO Cliente
VALUES ('1456792V','Luis','Restaurante Luis','C/ Juan Manuel Castaño nº 81','Gijón','985725060');
INSERT INTO Cliente
VALUES ('9875214L','Pepi','La Casina Pepi','C/ Meres nº 8','Meres','985722525');

INSERT INTO Productos
VALUES ('CAF001','Café Descafeinado','5KG','2','8.5');
INSERT INTO Productos
VALUES ('MANZ001','Manzanilla','25 unid','2','5.25');
INSERT INTO Productos
VALUES ('AZUV001','Azucar','100','1','3');

INSERT INTO Pedido
VALUES (codigosped.NEXTVAL,'04/06/2012','12578905B','CAF001');
INSERT INTO Pedido
VALUES (codigoped.NEXTVAL,'05/06/2012','98753214L','AZU001');

INSERT INTO Vehiculo
VALUES ('1234BBC','Renault','Kangoo');
INSERT INTO Vehiculo
VALUES ('1235BBC','Renault','Kangoo');

INSERT INTO Comercial
VALUES ('3692581A','José Domingo','Ruiz Alonso','1234BBC','658652315','C/ Altamira nº 15');
INSERT INTO Comercial
VALUES ('45736902Q','Felipe','Alonso Sierra','1234BBC','639987521','C/ Perdigones nº 2');

INSERT INTO Reparto
VALUES (codigosrep.NEXTVAL,'05/06/2012','3692581A');
INSERT INTO Reparto
VALUES (codigosrep.NEXTVAL,'06/06/2012','45736902Q');






Creacion de usuario ( no creo q tenga mucho q ver pro x si acaso xD





create tablespace PROYECTO
    datafile 'proyecto' size 2M
    autoextend on next 200K
    maxsize UNLIMITED;

create user GERENTE identified by GERENTE
default tablespace PROYECTO
quota UNLIMITED on PROYECTO;

grant create session  to GERENTE;

grant create table, create view, create procedure, create trigger, create sequence to GERENTE;





gracias x ayudarme :)

Toxico

Te están saliendo errores por el punto 6 que te puse.

Ejem:

Estas creando la tabla cliente dentro de "".

en oracle cuando creas un campo dentro de "" son diferentes que cuando no los tiene,  bueno no solo en oracle.

es decir "Cliente" es distinto de cliente.

- en el insert estas metiendo el valor codigoped.NEXTVAL para el campo que contiene una secuencia, esto no es necesario.




solo el principio....


birdez

 entonces deberia o poner en los dos sitios "Cliente" o Cliente no? una de las dos cosas pro no las dos

y lo de codigoped.NEXTVAL es para q sea autonumerico no? para q cada vez me aumente uno desde 1 hasta X

no es asi?

Toxico

Lo del NEXTVAL es lo que tu mencionas pero no es necesario(en realidad el termino es autogenerado), por eso te sale error de que estas insertando mas campos del que deberías.

Cuando crees las tablas y los campos te aconsejo que las crees sin ("), para que en la inserción no tengas problemas en ello.
solo el principio....


birdez

okei muchas gracias entonces al crear las tablas nada de "" sino solamente el nombre y listo

y en lo del autonumerico que deberia ponerlo asi x ejem:


INSERT INTO Pedido VALUES ("", '04/06/2012','12578905B','CAF001');

para q "" signifique q no pongo nada ?  o deberia poner solamente el nombre de la secuencia?

INSERT INTO Pedido VALUES (codigoped, '04/06/2012','12578905B','CAF001');

Toxico

#7
En el insert no coloques nada quedaria algo asi:


INSERT INTO Pedido  (Fecha_pedido, DNI_Cliente, Cod_Producto) VALUES ( '04/06/2012','12578905B','CAF001');

Edit: Fallo mio me equivocado jeje.
solo el principio....


birdez

okei muchas gracias x resolverme la duda xD