Używam zapytania parametrycznego, aby wstawić wartości do tabeli Oracle, tak:Dlaczego otrzymuję ORA-01722 (nieprawidłowy numer)?
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();
Zostało to działa dobrze, ale nagle ten przestał działać, a ja otrzymuję błędu Oracle ORA-01722 (nieprawidłowy numer). Sprawdziłem parametry, a wszystkie liczby są bez wątpienia poprawnymi liczbami. Nawet zastąpiłem wartości pozorne dla dowolnych wartości null i nadal dostaję błąd. Próbowałem tego samego zapytania w bezpośrednim sql (przy użyciu OraDeveloper Studio) i działa, nawet z identycznymi parametrami.
Jak mogę to śledzić?
EDIT: na żądanie w komentarzach, oto CREATE tabela:
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;
proszę pisać CREATE TABLE dla tabeli. Domyślam się, że wstawiane wartości są większe niż te przydzielone dla danego typu danych. IE: kolumna ma NUMBER (3) i próbujesz wstawić 1000. –
Utwórz opublikowaną instrukcję tabeli. –