Ist Update-Statement in einer Function möglioch

bad77

Benutzer
Beiträge
5
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?
 
Werbung:
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.
 
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.
Nein das geht nicht, der Zähler muss hoch gesetzt werden.
Habe jetzt das ganze über trigger gelöst.

Aber danke
 
Werbung:
Zurück
Oben