我有一个包含几列的表,如下所示:
CREATE TABLE CRM.INFO_ADICIONAL
(
ID_INFO_ADICIONAL NUMBER(10) NOT NULL,
NOMBRE VARCHAR2(100 BYTE) NOT NULL,
OBLIGATORIO NUMBER(1) NOT NULL,
TIPO_DATO VARCHAR2(2 BYTE) NOT NULL,
ACTIVO NUMBER(1) NOT NULL,
ID_TIPO_REQUERIMIENTO NUMBER(10) NOT NULL,
ID_USUARIO_AUDIT NUMBER(10) NOT NULL,
ORDEN NUMBER(3) DEFAULT 1,
RECHAZO_POR_NO NUMBER(1),
ID_TIPO_ARCHIVO_ADJUNTO NUMBER(10),
SOLICITAR_EN VARCHAR2(30 BYTE),
ID_CONSULTA NUMBER(10),
COMBO_ID VARCHAR2(40 BYTE),
APLICAR_COMO_VENC NUMBER(1),
MODIFICABLE NUMBER(1) DEFAULT 0,
ID_AREA_GESTION NUMBER(10),
ID_TAREA NUMBER(10)
)
“ COMBO_ID”列是目标。它被定义为 VARCHAR,但是当我尝试插入一行时,TOAD 显示
“ORA-06502: PL/SQL: 错误: error de conversión de carácter a número numérico o de valor”
或英文的“数字转换错误”。
这个表有一些预先存在的数据,我什至发现了一些行,包括 COMBO_ID 列的值,它们都是 VARCHAR,即:
NACION(民族)、SEXO(性)等
我尝试了一些简单的 SELECT 语句
SELECT
ID_INFO_ADICIONAL,
NOMBRE,
OBLIGATORIO,
TIPO_DATO,
ACTIVO,
ID_TIPO_REQUERIMIENTO,
ID_USUARIO_AUDIT,
ORDEN,
RECHAZO_POR_NO,
ID_TIPO_ARCHIVO_ADJUNTO,
SOLICITAR_EN,
COMBO_ID,
APLICAR_COMO_VENC,
ID_CONSULTA,
MODIFICABLE,
ID_AREA_GESTION,
ID_TAREA
INTO
pRegistro
FROM
crm.info_adicional
其中pRegistro被声明为
pRegistro INFO_ADICIONAL%ROWTYPE;
同样,我仍然收到此“数字转换错误”。但是,等等,如果我用 NUMBER 对 COMBO_ID 列中的 SELECT 值进行硬编码:
SELECT
--other columns
123456 COMBO_ID,
--other columns
INTO
pRegistro
FROM
crm.info_adicional
它有效,见鬼,它被定义为 VARCHAR。如果我做同样的事情但对字符串进行编码,它将无法再次执行
已经在我的 DEV 环境中尝试过,它工作正常。
我不是甲骨文的专业人士,但我感到很失落。会不会是表格变得“混乱”?有什么线索吗?