Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
ORA-00955: name is already used by an existing object
Enviado por RAQUEL el día 31 de agosto de 2005
Estoy creando desde visual una tabla de oracle y me da el siguiente error, sabeis porque???
Public OraSession As Object
Public OraDatabase As Object
Public OraDynaset As Object
Set OraSession = CreateObject("Oracleinprocserver.XOraSession")
Set OraDatabase = OraSession.DbOpenDatabase("PRUEBA.WORD", "prueba/PRUEBA", CInt(0))
Set OraDynaset = OraDatabase.DbCreateDynaset("CREATE TABLE pp (prueba varchar2 (7) NOT NULL)", CInt(0))
OraDynaset.Close
Set OraDynaset = Nothing 'libero memoria
Re: ORA-00955: name is already used by an existing object
Enviado por Rodolfo Reyes el día 31 de agosto de 2005
Te esta indicando que el nombre que estas tratando de ponerle a tu tabla ya esta siendo utilizado por algun objeto, este objeto puede ser una tabla, procedimiento, funcion, vista, etc.
Re: Re: Re: ORA-00955: name is already used by an existing object
Enviado por Jor-El el día 1 de septiembre de 2005
A ver Raquelita.
Debes hacer caso a la gente que sabe y que se molesta en poner respuestas a tus problemas.
Si te hubieras molestado en llamar a San Google verías algo como esto :
Error: ORA-00955: name is already used by an existing object
Cause: You tried to create a table <../../sql/tables/index.php>, view <../../sql/views.php>, index, synonym <../synonyms.php> or other object with a name that is already in use.
Action: The options to resolve this Oracle error are:
Rename your object that you are trying to create so that it is unique.
Drop the existing object and create the new object.
For a listing of objects with a particular name, you can run the following query:
SELECT *
FROM all_objects
WHERE object_name = 'NAME';
For example, if you wanted to find the objects whose name is SUPPLIERS, you could run the following SQL:
SELECT *
FROM all_objects
WHERE object_name = 'SUPPLIERS';
Please note that object_name's are stored in the all_objects <../sys_tables/index.php> table in uppercase.
Obviamente como sigues sin creertelo, en la linea antes del CREATE TABLE PATATIN pon otra con este codigo : DROP TABLE PATATIN CASCADE CONSTRAINTS
Re: Re: Re: Re: ORA-00955: name is already used by an existing object
Enviado por raquel el día 1 de septiembre de 2005
Que no es que no me lo crea en serio, es que lo pruebo y no me funciona, yo he encontre mucho sobre consultas pero no sobre creación, no tengo ni idea de oracle con visual y esta instrucción con una select funciona pero con create no, tb vi que necesitaba el create pero por algun motivo no me deja poner dos intrucciones a la vez y si las pongo por separado, así
Set OraDynaset1 = OraDatabase.DbCreateDynaset("DROP TABLE JJ CASCADE CONSTRAINTS", CInt(0)) y luego
Set OraDynaset1 = OraDatabase.DbCreateDynaset("CREATE TABLE JJ (prueba varchar2 (7) NOT NULL)", CInt(0))
Justo cuando esta en la línea de borrar me pone table or view does not exist.
No se si en visual puedes juntar varias sentencias sql pero si pongo ; me da error
Como ves no tengo apenas idea, yo he trabajado con access siempre.
De todas maneras muchísimas gracias.
Re: Re: Re: Re: Re: Re: ORA-00955: name is already used by an existing object
Enviado por raquel el día 1 de septiembre de 2005
No puedo hacer una select de una tabla que no exite y tampoco borrarla, yo creo que si que hay que poner el drop.... pero seguido de la sentencia de create y ahí es donde está el problema que no puedo juntar las dos sentencias....
Si pongo la linea de Drop.... no me la crea ni aparece en el catalogo que lo entiendo porque no exite.
Y si la quito me da el error original pero me la crea.
No se, no se me ocurre na.. estoy buscando ejemplos pero es que no veo nada.
Muchas gracias
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: ORA-00955: name is already used by an existing
Enviado por CHEMIAN el día 1 de septiembre de 2005
vamos a ver,
si el problema, segun creo, es que cuando intentas hacer el drop, te da error y te echa, y tu tienes que poner el drop obligatoriamente, porque no haces primero una select sobre all_tables (o alguna vista parecida) comprobando que JJ este y si no esta, te ahorras el drop y pasas directamente a la creacion.
No se si esto te funcionara. O lo mismo es que no estoy entendiendo bien el problema.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: ORA-00955: name is already used by an exis
Enviado por raquel el día 1 de septiembre de 2005
Te explico si es muy sencillo, lo único que creo que lo he complicado mucho. Estoy haciendo un programa en visual que lo primero que debe de hacer es crear una tabla en oracle con unos campos. Pues me falla y solo he puesto estas 6 líneas
1.- Public OraSession As Object
2.- Public OraDatabase As Object
3.- Public OraDynaset As Object
4.- Set OraSession = CreateObject(\"Oracleinprocserver.XOraSession\")
5.-Set OraDatabase = OraSession.DbOpenDatabase(\"PRU.WORD\", \"PRUEBA/PRUEBA\", CInt(0))
6.-Set OraDynaset1 = OraDatabase.DbCreateDynaset(\"CREATE TABLE PRUEBA1 (prueba varchar2 (7) NOT NULL)\", CInt(0))
y justo al llegar a la instrucción 6.- La de creación de la tabla me da el error, pero me la crea.
Seguro que me falta algo pero no tengo ni idea de que, y eso que solo son 6 líneas.
Por cierto, muchas gracias por tu paciencia.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: ORA-00955: name is already use
Enviado por Carlos el día 2 de septiembre de 2005
Hace mucho que no trabajo con VB, pero ¿Estáis seguros que se puede ejecutar un DDL con un dynaset?
Yo utilizaría ADO. Algo así:
Una vez instanciada la ADODB.Connection, instanciaría un
ADODB.Command para ella con el texto DDL: 'CREATE TABLE...'. Finalmente invocaría a su método execute.
Esto es sólo una idea. Hace mucho tiempo que no trabajo con VB (y con MicroSoft en general).
Bueno la verdad no se si esta dada la respuesta a este error
por cada tabla que creas se crea un objeto asociado al usuario
para poder empezar de nuevo solo debes hacer drop sobre la tabla creada en el usuario accedido y listo, puedes volver a manejar tu código y ejecutar nuevamente la aplicación que obviamente creara otro objeto del tipo tabla.
me falto agregar que esto lo puedes hacer directamente sobre la pagina inicial de la base de datos
entras como el usuario al que le haz asignado la tabla y listo