AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme bei Insert in Oracle DB (9.2.0)
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme bei Insert in Oracle DB (9.2.0)

Ein Thema von PanTau64 · begonnen am 18. Mai 2005 · letzter Beitrag vom 18. Mai 2005
Antwort Antwort
PanTau64

Registriert seit: 18. Mai 2005
5 Beiträge
 
#1

Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 11:25
Datenbank: Oracle • Version: 9.2.0 • Zugriff über: Direkt
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.

Ü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;
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#2

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 11:30
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??
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 11:31
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:

SQLQuery1.ParamByName('CUBE').asString:='FUS';
  Mit Zitat antworten Zitat
PanTau64

Registriert seit: 18. Mai 2005
5 Beiträge
 
#4

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 11:38
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;
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 11:41
Zitat von PanTau64:
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:
*********************************************************************
    SQLQuery1.Params[2].AsDateTime := Now;
    SQLQuery1.Params[2].AsString := '12345678';
Der Fehler ist aber immer noch drin

Gruß Igotcha
  Mit Zitat antworten Zitat
PanTau64

Registriert seit: 18. Mai 2005
5 Beiträge
 
#6

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 11:52
sorry, ich glaube ich habe jetzt alle Copy-Paste Fehler behoben

Delphi-Quellcode:
*********************************************************************
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;
Oracle Table:

CREATE TABLE DWH.SCAN_LOG
(
DATAMART VARCHAR2(255),
CUBE VARCHAR2(255),
TRANFORMER_DATE DATE,
CODE VARCHAR2(255),
DESCRIPTION VARCHAR2(255),
SEQ INT
)
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#7

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 12:51
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?
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
PanTau64

Registriert seit: 18. Mai 2005
5 Beiträge
 
#8

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 12:56
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?
  Mit Zitat antworten Zitat
annonyme

Registriert seit: 1. Sep 2004
Ort: Lübeck
35 Beiträge
 
#9

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 13:20
Zitat von PanTau64:
Oracle Table:

CREATE TABLE DWH.SCAN_LOG
(
DATAMART VARCHAR2(255),
CUBE VARCHAR2(255),
TRANFORMER_DATE DATE,
CODE VARCHAR2(255),
DESCRIPTION VARCHAR2(255),
SEQ INT
)
SEQ NUMBER(3,0) könnte funktionieren
  Mit Zitat antworten Zitat
PanTau64

Registriert seit: 18. Mai 2005
5 Beiträge
 
#10

Re: Probleme bei Insert in Oracle DB (9.2.0)

  Alt 18. Mai 2005, 13:26
Hab jetzt "SEQ" als NUMBER deklariert und jetzt funzt es, aber komischerweise nur mit TTABLE.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz