J'utilise une requête paramétrées pour insérer des valeurs dans une table Oracle, comme ceci:Pourquoi je reçois un ORA-01722 (numéro invalide)?
var q = "insert into MyTable(Field1, Field2...) values(:Field1, :Field2...)";
var cmd = new OracleCommand(q, conn); // conn is a pre-existing connection
cmd.Parameters.Add("Field1", field1Val);
cmd.Parameters.Add("Field2", field2Val);
// etc...
cmd.ExecuteNonQuery();
Cela a fonctionné très bien, mais tout à coup cela a cessé de travailler, et je reçois l'erreur Oracle ORA-01722 (Numéro invalide). J'ai vérifié les paramètres, et tous les nombres sont incontestablement des nombres valides. J'ai même substitué des valeurs factices pour n'importe quels nulls, et j'obtiens toujours l'erreur. J'ai essayé la même requête en SQL direct (en utilisant OraDeveloper Studio), et cela fonctionne, même avec les mêmes paramètres.
Comment puis-je suivre celui-ci?
EDIT: par demande dans les commentaires, voici la déclaration de create table:
CREATE TABLE ALPHA.VISITFINDINGS (
ID NUMBER(12),
VISITID NUMBER(12) NOT NULL,
DESCRIPTION VARCHAR2(100),
CUSTOMIMAGE CLOB,
VISUALFINDINGSSECTIONMAPID NUMBER(12),
FINDINGSID NUMBER(12),
CONSTRAINT FK_VISITFINDINGS_AREA FOREIGN KEY (VISUALFINDINGSSECTIONMAPID)
REFERENCES ALPHA.VISUALFINDINGSSECTIONMAP(VISUALFINDINGSSECTIONMAPID),
CONSTRAINT FK_VISITFINDINGS_FINDINGS FOREIGN KEY (FINDINGSID)
REFERENCES ALPHA.FINDINGS(FINDINGSID),
CONSTRAINT FK_VISITFINDINGS_VISIT FOREIGN KEY (VISITID)
REFERENCES ALPHA.VISITS(VISITID),
CONSTRAINT PK_VISITFINDINGS PRIMARY KEY (ID))
TABLESPACE USERS
STORAGE (
INITIAL 64K
MAXEXTENTS UNLIMITED
)
LOGGING;
S'il vous plaît afficher l'instruction CREATE TABLE pour la table. Ma conjecture est que les valeurs que vous insérez sont plus grandes que ce qui est alloué pour le type de données. IE: la colonne est NUMBER (3) et vous essayez d'insérer 1 000. –
Créer une déclaration de table publiée. –