Announcement

Collapse
No announcement yet.

InterBase auf SQL-Server portieren

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

  • InterBase auf SQL-Server portieren

    Hallo,
    kann mir jemand folgende Stored Procedure aus InterBase nach SQL-Server umsetzen?

    ###
    ALTER PROCEDURE SP_UP_ALL_VERST AS

    declare variable x integer;
    declare variable y integer;
    begin

    for select eind_num,uniq from grabstelle into :x,:y do
    update verstorb set uniq = :y where stelle_num = :x;

    end
    ###

    Ich bedanke mich für jegliche Bemühungen schon im voraus.

    Gruss,
    Christian

  • #2
    Hi,
    <br>
    <br>ad hoc fallen mir da zwei Möglichkeiten ein:
    <pre>
    update verstorb set verstorb.uniq =
    Case
    When (Select grabstelle.uniq from grabstelle where grabstelle.eind_num = verstorb.eind_num) is Null Then verstorb.uniq
    else (Select grabstelle.uniq from grabstelle where grabstelle.eind_num = verstorb.eind_num)
    end
    </pre>
    ODER:
    <pre>
    Create PROCEDURE SP_UP_ALL_VERST AS
    Declare @x Integer
    Declare @y Char

    DECLARE abc CURSOR FOR
    SELECT grabstelle.eind_num, grabstelle.uniq
    FROM grabstelle

    OPEN abc
    FETCH NEXT FROM abc
    Into @x, @y

    WHILE @@FETCH_STATUS = 0
    BEGIN
    UPDATE verstorb SET verstorb.uniq = @y
    WHERE verstorb.stelle_num = @x

    FETCH NEXT FROM abc
    Into @x, @y

    End
    CLOSE abc
    DEALLOCATE abc
    </pre>
    <br>Welche der beiden Möglichkeiten die schnellere ist kann ich nicht sagen. Auf den ersten Blick würde ich für das Update plädieren, doch da hier case und Sub-Selects verwendet werden kann es schon sein das die Prozedur (cursor) Variante doch schneller ist.
    <br>Im Übrigen kann man zur Umsätzung weiterer komplexerer "for select into" Statements das obige Prozedur Konzept verwenden. Ich habe in diesem speziellen Fall auch das einfache update erwähnt, da es sich hier anbot (verwirklichen ließ). Für gewöhnlich läßt sich ein "for select into" jedoch nur durch die Cursor Variante implementieren.
    <br>
    <br>@all:
    <br>Es wäre sehr schön wenn jemand noch eine bessere Idee hätte um ein Interbase "for select into" in kürzester Zeit (die Cursor Wariante ist schon ein wenig schreibarbeit) auf dem SQL Server zu implementieren. Desweiteren würde mich interessieren, ob das "for select into" auf dem Interbase genau so ein Performance-Killer (so sagte man zumeindest früher) ist wie die Verwendung von Cursorn auf dem MS SQL Server.
    <br>
    <br>Also ich persönlich vermisse auf dem MS SQL Server eine derart kompakte Lösung wie das "for select into" des IB.
    <br>
    <br>mfg
    <br>P

    Comment

    Working...
    X