Necesidad de convertir el tipo de dato al insertar en otra tabla.
CREAR TABLA tab1
(
e_id VARCHAR2 (255),
e_date VARCHAR2 (255),
t_ref_num VARCHAR2 (255),
CONSTRAINT pk_tab1 PRIMARY KEY (e_id)
);
INSERTAR EN tab1 VALORES (1, '01-01-2000', 11);
INSERTAR EN tab1 VALORES (2, '01-01-2001', 12);
INSERTAR EN tab1 VALORES (3, '01-01-2002', 13);
CREAR TABLA tab2
(
e_id NUMBER (20),
e_date FECHA,
t_ref_num NUMBER (20),
CONSTRAINT pk_tab2 PRIMARY KEY (e_id)
);
Necesito insertarlo en la tabla tab2 y necesito convertir el tipo de datos según el tipo de datos de la tabla tab2. Porque en la tabla tab1 siempre obtendré el tipo de datos varchar, pero al insertarlo en la tabla tab2, tengo que realizar la conversión de tipo y tiene que insertarlo en el tipo de datos adecuado. ¿Cómo puedo lograr esto?
FUSIONAR EN tt tab2
UTILIZANDO (SELECCIONAR
e_id, e_date, _t_ref_num
DE tab1) t1 ON (t2.e_id = t1.e_id)
CUANDO COINCIDE LUEGO
ACTUALIZACIÓN
ESTABLECER tt.e_date = t1.e_date,
tt.t_ref_num = t1.t_ref_num
CUANDO NO COINCIDA LUEGO
INSERTAR (e_id, e_date, t_ref_num)
VALORES (t1.e_id, TO_DATE (t1.e_date, 'DD-MM-YYYY'), t1.t_ref_num);
Tengo que realizar los cambios en la declaración de fusión solamente.
davy.ai
Para convertir los tipos de datos durante el proceso de inserción, se pueden utilizar las funciones apropiadas para convertir explícitamente los valores en la cláusula SELECT a los tipos de datos de las columnas en la tabla de destino tab2.
Aquí hay una declaración MERGE actualizada que convierte los valores en la cláusula SELECT para que coincidan con los tipos de datos correspondientes en la tabla tab2:
En esta declaración actualizada, utilizamos la función
TO_NUMBER
para convertir las columnase_id
yt_ref_num
deVARCHAR2
aNUMBER
, y la funciónTO_DATE
para convertir la columnae_date
deVARCHAR2
aDATE
. Esto nos permite insertar los valores en la tablatab2
con los tipos de datos correctos.