Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Ist Update-Statement in einer Function möglioch

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von bad77, 22 September 2015.

  1. bad77

    bad77 Benutzer

    Wollte folgende Function schreiben:

    Create Function NextBNr(@KID bigint) Returns bigint as
    Begin
    if (@KID is null) return NULL;
    Declare @LFD bigint
    SET @LFD = NULL;
    Select @LFD = NextNr from XY with (updlock) Where ID = @KID;
    Update XY Set NexNr = @LFD + 1 Where ID = @KID;
    RETURN @LFD
    End

    Managment Studio sagt ne: "Ungültige Verwendung eines UPDATE-Operators mit Nebenwirkungen innerhalb einer Funktion."

    Gibts eine andere Möglichkeit in der Funktion Daten zu ändern, außer andere Procedure aufzurufen?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Warum lädts Du den Wert erst in eine Spalte, wozu der Cursor? Mach doch einfach ein Update:

    Code:
    test=*# create table bla(id int, val int);
    CREATE TABLE
    test=*# insert into bla values (1,10);
    INSERT 0 1
    test=*# update bla set val=val+1 where id = 1;
    UPDATE 1
    test=*# select * from bla ;
     id | val
    ----+-----
      1 |  11
    (1 row)
    
    Möglicherweise könnte dies also deine Lösung sein, ich kenne aber M$SQL nicht.
     
  3. bad77

    bad77 Benutzer

    Nein das geht nicht, der Zähler muss hoch gesetzt werden.
    Habe jetzt das ganze über trigger gelöst.

    Aber danke
     
  4. ukulele

    ukulele Datenbank-Guru

  5. bad77

    bad77 Benutzer

    Danke, das dachte ich mir schon.....
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden