Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Query Multiple

Estas en el tema de Query Multiple en el foro de Oracle en Foros del Web. Saludos a todos. Tengo el siguiente problema o mas bien detalle, tengo un arreglo de donde extraigo informacion para insertar en una tabla y lo ...
  #1 (permalink)  
Antiguo 11/10/2010, 12:22
Avatar de bitbow  
Fecha de Ingreso: julio-2006
Ubicación: Distrito Federal
Mensajes: 635
Antigüedad: 17 años, 9 meses
Puntos: 34
De acuerdo Query Multiple

Saludos a todos.

Tengo el siguiente problema o mas bien detalle, tengo un arreglo de donde extraigo informacion para insertar en una tabla y lo hago de la siguiente forma:

INSERT INTO tabla VALUES('nombre1','13/07/2010',0,0);

el detalle que tengo es que dentro de un for quiero que las sentencias se graben en un string para despues ejecutarlas todas en una sola consulta:

el problema es que el string me queda asi:

INSERT INTO tabla VALUES('nombre2','03/02/2010',0,0); INSERT INTO tabla VALUES('nombre3','11/04/2010',0,0);

y oracle no me respeta el ; me dice que es un caracter invalido, he probado en el manager y si meto esta sentencia :

INSERT INTO tabla VALUES('nombre2','03/02/2010',0,0);
INSERT INTO tabla VALUES('nombre3','11/04/2010',0,0);

Si es valida y no me genera ningun problema, entonces mi pregunta es como le introduzco un salto de linea a la sentencia para que oracle me lo reconozca ya intente /n, char(13) entre otras, tambien la acumulacion de los values (values(), ()) de todas las formas que pude, alguien tiene alguna idea de como hacer esto.

Muchas gracias por la ayuda.
__________________
El ego es el mayor enemigo de un hombre inteligente.
  #2 (permalink)  
Antiguo 11/10/2010, 12:29
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Query Multiple

No tengo como probarlo en estos momentos en oracle, pero funciona en otros DBMS

Código SQL:
Ver original
  1. INSERT INTO tabla VALUES('nombre2','03/02/2010',0,0),('nombre3','11/04/2010',0,0);

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 11/10/2010, 13:17
Avatar de bitbow  
Fecha de Ingreso: julio-2006
Ubicación: Distrito Federal
Mensajes: 635
Antigüedad: 17 años, 9 meses
Puntos: 34
De acuerdo Respuesta: Query Multiple

Si efectivamente esa sentencia funciona en varias dbms , pero no me ha funcionado en oracle, incluso ya probe esto esn sqlserver y si funciona.

INSERT INTO tabla VALUES('nombre2','03/02/2010',0,0) ; INSERT INTO tabla VALUES('nombre3','11/04/2010',0,0)
__________________
El ego es el mayor enemigo de un hombre inteligente.
  #4 (permalink)  
Antiguo 11/10/2010, 13:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Query Multiple

Algo que puedes probar es guardar sentencia por sentencia en un array de strings.
Luego con el mismo for, ejecutar cada posición del array.

Yo tuve un problema similar utilizando C# y hubo un momento en que el string fue tan largo que me generó un problema de memoria. Esto se daba por que el string que le pasaba era demasiado largo con la cantidad de inserts que le pasaba. La forma como lo solucioné es como te digo al principio. En ese caso no creo que tengas problemas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 11/10/2010, 13:48
Avatar de bitbow  
Fecha de Ingreso: julio-2006
Ubicación: Distrito Federal
Mensajes: 635
Antigüedad: 17 años, 9 meses
Puntos: 34
Respuesta: Query Multiple

Saludos nuevamente,

veo que no existe una solucion distinta, aunque me hubiera gustado que si ya que en mysql y mssql se puede utilizar la sentencia de la forma en que lo requiero y me intriga que en oracle no sea asi.

y bueno lo que yo no quiero es tener que ejecutar un execsql cada que lea el arreglo, para mi caso son como maximo 20 inserts en una tabla de 4 campos por lo que no creo que el string sea un problema, pero si no se puede que puedo hacer yo.

Insisto es una lastima, muchas gracias por la ayuda y se quedara como menciona el amigo huesos52, muchas gracias.
__________________
El ego es el mayor enemigo de un hombre inteligente.

Etiquetas: query
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:12.