Announcement

Collapse
No announcement yet.

ADO, MSSQL + Oracle und Stored Procedures

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ADO, MSSQL + Oracle und Stored Procedures

    Hallo,

    - Delphi 6 Enterprise UP#2<br>
    - MSSQL 2000<br>
    - Oracle 9i 9.0.1<br>
    - Datenzugriff via ADO

    Ich habe in MSSQL eine Stored Procedure erstellt, die wie folgt aussieht:
    <pre>
    CREATE PROCEDURE AddTable1(
    @aid int,
    @atitle varchar(50)
    AS
    INSERT INTO Table1 (ID, Beschreibung)
    VALUES (@aid, @atitle);
    </pre>

    Für Oracle habe die gleiche Procedure geschrieben und in ein Oracle-Package gepackt.
    <pre>
    PROCEDURE AddSP(
    aid IN TInteger,
    atitle IN TDescription) IS
    BEGIN
    INSERT INTO Table1
    VALUES (aid, atitle);
    END;
    </pre>
    Anmerkung: Die verwendeten Typen TInteger und TDescription wurden mit subtype innerhalb des Oracle-Packages erstellt.

    Konfiguriere ich die UML-Datei, die dem ADO-Zugriff zugrunde liegt, für MSSQL, so läuft alles wunderbar. Wird die UML-Datei aber auf Oracle umgestellt, so ernte ich beim Aufruf der ADOCommand.Execute die Fehlermeldung <i>Unbekannter Fehler</i>. Folgender Code führt die Stored Procedure aus:
    <pre>
    with ADOCommand do begin
    Parameters[1].Value := ...;
    Parameters[2].Value := ...;
    Execute;
    end;
    </pre>

    In einem anderer Thread hier im Forum unter "StoredProcedure ausführen (Oracle)" war schon der Hinweis gegeben, die Parametertypen von BCD auf Float zu ändern. In meinem Fall sind alle Parameter vom korrekten Datentyp.

    Gruß<br>
    Stephan Schneider

  • #2
    Herr Kosch noch ein kleiner Nachtrag:

    Wenn ich die SP nicht in ein Package stecke, sonder direkt innerhalb der Prozeduren unter meinem Schema XY erstelle, zeigt sich das gleiche Verhalten (Unbekannter Fehler). Der Connect zu Oracle über mein Benutzerschema XY funktioniert tadellos.

    Stepha

    Comment


    • #3
      Hallo,

      &gt;..die Fehlermeldung Unbekannter Fehler...

      zuerst würde ich nachsehen, ob in der <b>Errors</b>-Kollektion aussagekräftigere Fehlermeldungen sind

      Comment


      • #4
        Hallo Herr Kosch,

        leider stehen in der Errors-Kollektion keine weiteren Infos als "Unbekannter Fehler", d.h. die Standard-Exception liefert diesen Fehler als auch die Enkapselung in einen try-except-Block mit Fehlerauswertung im execpt-Block:
        <pre>with ADOConnection do
        for I := 0 to Errors.Count - 1 do
        S := S + Errors[I].Description + #1013;</pre>
        Nur ein Eintrag in der Errors-Kollektion.

        Muss/sollte beim Zugriff auf Stored Procs in einem Oracle-Package der Name des Oracle-Packages voranstehen oder erfolgt die Auflösung anhand des Schemas (Benutzer) automatisch?

        Beispiel:<br>
        - Oracle-Package: MyOraPackage<br>
        - Stored Proc im Oracle-Package: MyProc

        in Delphi:
        <pre>ADOCommand.CommandType := cmdStoredProc;
        ADOCommand.CommandText := 'MyOraPackage.MyProc'</pre>

        oder einfach nur:
        <pre>ADOCommand.CommandType := cmdStoredProc;
        ADOCommand.CommandText := 'MyProc'</pre>

        Ich habe z.Zt. die zweite Lösung (mit unbekanntem Fehler) realisiert.

        Stephan Schneide

        Comment


        • #5
          Hallo,

          für ORACLE-Datenbanken kann ich keine eigenen Erfahrungen beisteuern

          Comment

          Working...
          X