![]() |
Datenbank: Oracle • Version: 9.2.0 • Zugriff über: Direkt
Probleme bei Insert in Oracle DB (9.2.0)
Hi Folks,
ich habe folgendes Problem. Im nachfolgendem Code versuche ich Daten in eine kleine Oracle-Tabelle zu schreiben. Wenn ich nur Stringfelder verwende, habe ich kein Problem. Bei dem Datum und dem Integer Wert bekomme ich jedesmal die Meldung "DBX-Fehler Ungültiger Feldtyp". Ich habe schon jeden erdenklichen nummerischen Feldtyp in Oracle zugewiesen, aber es will einfach nicht klappen. :wall: Über schnelle Hilfe würde ich mich tierisch freuen. PS: Ich verwende übrigens die Komponenten TSQLConnection und TSQLQuery. PSS: Habe zwar lange Jhare entwickelt, aber immer nur in Zusammenarbeit mit BDE und Paradox, also entschuldigt, wenn ich mein Beispiel Fehler enthält. :? cheers Olaf
Delphi-Quellcode:
Code:
********************************************************************* procedure TForm1.Button1Click(Sender: TObject); var sSql : String; stmtParams: TParams; begin SQLConnect1.Connected := True; SQLQuery1.SQL.Clear; sSql := ''; sSql := 'INSERT INTO DATAMART_ERR_LOG ' + '(DATAMART, CUBE, TRANFORMER_DATE, ' + '(DATAMART, CUBE, ' + 'CODE, DESCRIPTION, SEQ) ' + 'VALUES (:Datamart, :Cube, :Transformer_Date, ' + 'VALUES (:Datamart, :Cube, ' + ':Code, :Description, :SEQ)'; SQLQuery1.SQL.Add(sSql); SQLQuery1.Params[0].AsString := 'FUS'; SQLQuery1.Params[1].AsString := 'FuS_Behaelter'; SQLQuery1.Params[2].AsDateTime := Now; SQLQuery1.Params[2].AsString := '12345678'; SQLQuery1.Params[3].AsString := 'Dies ist ein Test'; SQLQuery1.Params[4].AsInteger := 250; SQLQuery1.ExecSQL(False); SQLConnect1.Connected := False; end; |
Re: Probleme bei Insert in Oracle DB (9.2.0)
Hi,
versuchst du in eine Tabelle zu schreiben oder in zwei? Wenn in eine, warum dann 2x "Values"? Hastes schonma versucht, in dem du n Datum fest übergibst und das dann mit to_date() (<--- is ne Oracle Funktion) umwandelst?? |
Re: Probleme bei Insert in Oracle DB (9.2.0)
Da Du mit Parameter-Indices arbeitest, fällt mir erstmal auf, dass Du 8 Parameter in Deinem SQL-Statement hast, aber nur 5 Parameter übergibst, wovon 1 doppelt vorhanden ist.
Du benutzt in Deinem SQL-Statement einige Parameter mehrmals, warum übergibst Du diese dann nicht so:
Delphi-Quellcode:
SQLQuery1.ParamByName('CUBE').asString:='FUS';
|
Re: Probleme bei Insert in Oracle DB (9.2.0)
Sorry aber ich habe beim kopieren einen Fehler gemacht. Die Zeile mit "Values" ist zweimal reingerutscht. Der "richtige" Code muss sein:
cheers Code:
Delphi-Quellcode:
*********************************************************************
procedure TForm1.Button1Click(Sender: TObject); var sSql : String; stmtParams: TParams; begin SQLConnect1.Connected := True; SQLQuery1.SQL.Clear; sSql := ''; sSql := 'INSERT INTO DATAMART_ERR_LOG ' + '(DATAMART, CUBE, TRANFORMER_DATE, ' + 'CODE, DESCRIPTION, SEQ) ' + 'VALUES (:Datamart, :Cube, :Transformer_Date, ' + ':Code, :Description, :SEQ)'; SQLQuery1.SQL.Add(sSql); SQLQuery1.Params[0].AsString := 'FUS'; SQLQuery1.Params[1].AsString := 'FuS_Behaelter'; SQLQuery1.Params[2].AsDateTime := Now; SQLQuery1.Params[3].AsString := '12345678'; SQLQuery1.Params[4].AsString := 'Dies ist ein Test'; SQLQuery1.Params[5].AsInteger := 250; SQLQuery1.ExecSQL(False); SQLConnect1.Connected := False; end; |
Re: Probleme bei Insert in Oracle DB (9.2.0)
Zitat:
Gruß Igotcha |
Re: Probleme bei Insert in Oracle DB (9.2.0)
sorry, ich glaube ich habe jetzt alle Copy-Paste Fehler behoben
Delphi-Quellcode:
Oracle Table:
*********************************************************************
procedure TForm1.Button1Click(Sender: TObject); var sSql : String; stmtParams: TParams; begin SQLConnect1.Connected := True; SQLQuery1.SQL.Clear; sSql := ''; sSql := 'INSERT INTO SCAN_LOG ' + '(DATAMART, CUBE, TRANFORMER_DATE, ' + 'CODE, DESCRIPTION, SEQ) ' + 'VALUES (:Datamart, :Cube, :Transformer_Date, ' + ':Code, :Description, :SEQ)'; SQLQuery1.SQL.Add(sSql); SQLQuery1.Params[0].AsString := 'FUS'; SQLQuery1.Params[1].AsString := 'FuS_Behaelter'; SQLQuery1.Params[2].AsDateTime := Now; SQLQuery1.Params[3].AsString := '12345678'; SQLQuery1.Params[4].AsString := 'Dies ist ein Test'; SQLQuery1.Params[5].AsInteger := 250; SQLQuery1.ExecSQL(False); SQLConnect1.Connected := False; end; CREATE TABLE DWH.SCAN_LOG ( DATAMART VARCHAR2(255), CUBE VARCHAR2(255), TRANFORMER_DATE DATE, CODE VARCHAR2(255), DESCRIPTION VARCHAR2(255), SEQ INT ) |
Re: Probleme bei Insert in Oracle DB (9.2.0)
Du schreibst "SQLQuery1.Params[2].AsDateTime := Now;" aber in deiner Tabellendeklaration hast dus so "TRANFORMER_DATE DATE" wenn dann mach "TRANFORMER_DATE DATETIME" draus, oder halt andersrum. Könnte das evtl. dein Fehler sein?
|
Re: Probleme bei Insert in Oracle DB (9.2.0)
Nein, das Datum ist nicht mein Problem. Ich habe eben mit TTable herumexperimentiert und da konnte ich einen Satz mit einem Datum erzeugen. Das Feld "SEQ" macht mir Probleme. Ich weiß nicht, welchen Datentyp ich dort nehmen soll. Ich bekomme immer die gleiche Meldung.
Any idea? :gruebel: |
Re: Probleme bei Insert in Oracle DB (9.2.0)
Zitat:
|
Re: Probleme bei Insert in Oracle DB (9.2.0)
Hab jetzt "SEQ" als NUMBER deklariert und jetzt funzt es, aber komischerweise nur mit TTABLE. :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz