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

Insert into con nombre de tabla variable

Estas en el tema de Insert into con nombre de tabla variable en el foro de Oracle en Foros del Web. Hola a todos, Estoy creando un función oracle que recoge unos datos de una tabla para insertarlos en otra, pero la tabla de inserción puede ...
  #1 (permalink)  
Antiguo 12/01/2011, 09:27
 
Fecha de Ingreso: enero-2011
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Insert into con nombre de tabla variable

Hola a todos,

Estoy creando un función oracle que recoge unos datos de una tabla para insertarlos en otra, pero la tabla de inserción puede variar de manera que no se si es posible ejecutar la función pasando como parametro el nombre de la tabla donde se deben insertar los registros, es decir algo de estilo: (de manera esquemática para que me entendáis)

create o replace function prueba (tablename varchar2)

BEGIN

SELECT V1 FROM TABLA1;

INSERT INTO "tablename" (campo1) VALUES (V1);

END


Un saludo y gracias,
  #2 (permalink)  
Antiguo 12/01/2011, 09:46
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: Insert into con nombre de tabla variable

Utilizando SQL dinamico.
mira este tema y la clausula EXECUTE IMMEDIATE.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 12/01/2011, 10:29
 
Fecha de Ingreso: enero-2011
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Insert into con nombre de tabla variable

Gracias Huesos52 por tu respuesta, pero el ejemplo que comentas quizás funciona con PL/SQL pero no con una función SQL trabajando contra ORACLE dese el SQLPLUS.

De todas maneras muchas gracias, quizás no se posible realizar lo que comento.

Un saludo,
  #4 (permalink)  
Antiguo 12/01/2011, 10:35
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: Insert into con nombre de tabla variable

Porque no describes bien l oque quieres hacer?
Tal vez haya una opción.

ademas, en tu primer post dices que necesitas una función. Eso no es plsql?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 12/01/2011, 10:46
 
Fecha de Ingreso: enero-2011
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Insert into con nombre de tabla variable

Hola Huesos52,

En primer lugar gracias por tu atención, este es mas o menos el código:

CREATE OR REPLACE PROCEDURE PRD_EST(v_codubi VARCHAR2, nombreTabla VARCHAR2) IS

v_codlot VARCHAR2(10);
v_secuen NUMBER(9);
err_num NUMBER;
err_msg VARCHAR2(255);

CURSOR UBILIN(pcodubi IN VARCHAR2) IS
SELECT id2, id3 FROM PRUEBA1
WHERE id1 = pcodubi;

ubilin_rec UBILIN%ROWTYPE;

BEGIN

OPEN UBILIN(v_codubi);
LOOP
FETCH UBILIN INTO ubilin_rec;

EXIT WHEN UBILIN%NOTFOUND;

v_secuen := ubilin_rec.id3;
v_codlot := ubilin_rec.id2;


INSERT INTO &nombreTabla (Campo1,Campo2) VALUES (v_secuen,v_codlot);

END LOOP;

CLOSE UBILIN;

COMMIT;

EXCEPTION
WHEN OTHERS THEN
err_num := SQLCODE;
err_msg := SQLERRM;
dbms_output.put_line('Error:'||TO_CHAR(err_num));
dbms_output.put_line(err_msg);
ROLLBACK;

END PRD_EST;
/

Un saludo y gracias de antemano desde BCN,
  #6 (permalink)  
Antiguo 12/01/2011, 10:49
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: Insert into con nombre de tabla variable

Prueba en la parte del insert así

Código SQL:
Ver original
  1. EXECUTE IMMEDIATE 'INSERT INTO ' || nombreTabla || ' (Campo1,Campo2) VALUES (' || v_secuen || ',' || v_codlot || ')';
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 12/01/2011, 10:54
 
Fecha de Ingreso: enero-2011
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Insert into con nombre de tabla variable

Ole ole Huesos52,

Funciona correctamente, soy hombre de poca fe :)

Un saludo y muchas gracias desde Barcelona,

Etiquetas: insert, nombre, tablas, variables
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 23:45.