Announcement

Collapse
No announcement yet.

Text insert & append

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

  • Text insert & append

    Hallo SQL Profi´s

    MS SQLExpress2005

    EXECUTE Ins_Upd_Text speichert Text in eine neue Tabelle oder hängt in hinten dran

    wie kann über EXECUTE Ins_Upd_Text der Text aus @LT über eine Schleife
    von ##TempTabelle in eine neue gespeichert werden (alle Datensätze)



    EXECUTE Ins_Upd_Text @M_ID = @MANDANT,
    @_LNr = @LNR,
    @_Lt = @Text

    SELECT @LT = dbo.f_Get_Werte(F,7), -- TEXT
    @LNr = dbo.f_Get_CSVWerte(F, 3, ';', 'Y') -- NR
    from ##TempTabelle as F
    Where F like 'abc%'



    viele Grüße Klaus

  • #2
    Hallo,

    wenn die gespeicherte Prozedur für jeden Datensatz der Ergebnismenge einer SELECT-Abfrage einmal aufgerufen werden soll, hilft ein CURSOR weiter. Die CURSOR LOCAL FAST_FORWARD FOR-Anweisung definiert die SELECT-Abfrage, die die Ergebnismenge zusammenstellt. Alle Spalten des Datensatzes müssen dann in lokalen Variablen gepuffert werden. Über den FETCH NEXT-Aufruf setzt man den Cursor-Zeiger solange auf den nächsten Datensatz, bis der @@FETCH_STATUS über den Wert 0 das Ende der Ergebnismenge kennzeichnet:
    [highlight=SQL]
    DECLARE @id INT;
    DECLARE @datum VARCHAR(10);
    DECLARE @Cr CURSOR;
    SET @Cr = CURSOR LOCAL FAST_FORWARD
    FOR SELECT id, datum FROM Quelltabelle;
    OPEN @Cr
    BEGIN TRY
    FETCH NEXT FROM @Cr INTO @id, @datum;
    WHILE (@@FETCH_STATUS = 0)
    BEGIN
    EXEC dbo.spCheckInputSQL2005 @id, @datum;
    FETCH NEXT FROM @Cr INTO @id, @datum;
    END
    CLOSE @Cr
    END TRY
    BEGIN CATCH
    IF (CURSOR_STATUS('variable','@Cr') = 1)
    BEGIN
    CLOSE @Cr;
    PRINT 'Uups';
    END
    END CATCH
    DEALLOCATE @Cr;
    GO
    [/highlight]

    Comment


    • #3
      Danke für das Beispiel klappt hervorragend!

      Gruß Klaus

      Comment

      Working...
      X