Announcement

Collapse
No announcement yet.

Stored Procedure: Interbase -> Oracle 8i

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

  • Stored Procedure: Interbase -> Oracle 8i

    Hallo wer kann mir helfen?

    Ich versuche testhalber ein Projekt von Interbase nach Oracle8i zu
    uebertragen um die Performance zu vergleichen. Dabei habe ich folgendes
    Problem:

    Bei Interbase habe ich IB6 verwendet und mit D5 Professional und IBX
    auf die Datenbank zugegriffen. Das funktioniert super und ich bin total
    begeistert.

    Jetzt habe ich versucht die Datenbank auf Oracle 8i zu uebertragen und wollte mittels NCOCI8 darauf zugreifen.

    Im Interbase-Projekt habe ich alle Zugriffe ueber Stored Procedures realisiert.

    Leider konnte ich bisher keine Literatur finden, die mir weitergeholfen hat.

    1.Frage: Wie uebertrage ich die folgende Interbase-Procedure nach Oracle 8i?

    <pre>
    CREATE PROCEDURE GetCommentsHistory (NORDERNO VARCHAR(7))
    RETURNS (IVERSION INTEGER, DATUM VARCHAR(10), ZEIT VARCHAR(8),
    CUSER VARCHAR(20), COMMENTTYPE VARCHAR(1), ITEMNO VARCHAR(4),
    COMMENT VARCHAR(255)) AS
    BEGIN
    FOR SELECT IVERSION, DATUM, ZEIT, CUSER, COMMENTTYPE, ITEMNO, COMMENT
    FROM IMPORT i JOIN COMMENTS c ON i.IMPORTID = c.INTERNALIMPORT
    WHERE (i.ORDERNO = :NORDERNO)
    INTO :IVERSION, ATUM, :ZEIT, :CUSER, :COMMENTTYPE, :ITEMNO,
    :COMMENT
    DO
    SUSPEND;
    END
    ^

    </PRE>

    Zusatzfrage: Wie rufe ich die Daten mit NCOCI8 am besten ab?

    Ich bin ueber jede Idee und speziell ueber einen guten Literaturhinweis
    sehr dankbar.

    Ralf Lorenz

  • #2
    Für komplexe Proceduren hilft nur ps/sql handbuch

    Die obige Procedure, würde ich auch in InterBase nicht nutzen, sondern wenn es um den Speedvorteil der compilierten Hinterlegung in der DB geht, eine View einsetzen. Die wäre dann auch zwischen IB und Ora kompatibel

    Comment


    • #3
      Ralf,

      ich schließe mich der Meinung von Andreas über den Sinn der Prozedur an, verweise aber gleichzeitig auf die Möglichkeit, in Oracle mehrere Rückgabewerte in Form eines ResultSet zurückzugeben:

      http://govt.oracle.com/~tkyte/ResultSets/

      c

      Comment


      • #4
        create or replace procedure GetCommentsHistory( Norderno in
        varchar2(7), iversion out number, datum out date, zeit out date,
        cuser out varchar(20), commentytype out char, itemno out varchar2(4)
        comment varchar2(255)))

        as

        begin

        for i in (SELECT IVERSION, DATUM, ZEIT, CUSER, COMMENTTYPE,
        ITEMNO, COMMENT
        FROM IMPORT i, COMMENTS c
        where i.IMPORTID = c.INTERNALIMPORT
        and i.ORDERNO = NORDERNO)
        loop
        jetzt macht der Cursor alles was Du willst ....
        und Du kannst die einzelnen Felder mit i.IVERSION, i.DATUM,
        i.ZEIT, i.CUSER, i.COMMENTTYPE,i.ITEMNO, i.COMMENT
        ansprechen
        end loop;
        end;
        /
        alles wird gut... hihi
        Ein gutes Buch findest Du in Pl/Sql Programmierung von Hanser oder
        Steven Feuerstein Oracle pl/sql Grundlagen von O'Reilly
        Bei Fragen schick mir eine Mail [email protected]
        Rober

        Comment

        Working...
        X