Hallo! Ich verwende den folgenden Code in einer StoredProcedure mit SQL SErver 2000 um die Position eines Datensatzes um eines zu verringern bzw. zu erhöhen. Die Änderung wird durch den Wert @AENDERUNG an die SP weitergegeben. Das Erhöhen des Wertes geht einwandfrei, aber die Verringerung nicht. Liegt das daran, dass negative Werte in @AENDERUNG nicht verarbeitet werden? Wie sähe eine Lösung aus?
Vielen Dank,
Pascal
ALTER PROCEDURE UPD_AUSNR @UMFRAGETYP_ID int, @AUSSAGE_ID int, @AENDERUNG int AS
DECLARE @MAXNR int
SET @MAXNR = (SELECT MAX(ATYP_NR) FROM T_ATYP WHERE ATYP_TYP_ID = @UMFRAGETYP_ID AND ATYP_NR=@AUSSAGE_ID)
IF (@AUSSAGE_ID+@AENDERUNG<@MAXNR) OR (@AUSSAGE_ID+@AENDERUNG<0) RETURN(0)
UPDATE T_ATYP SET ATYP_NR = 9999999 WHERE ((ATYP_TYP_ID = @UMFRAGETYP_ID) AND (ATYP_NR = @AUSSAGE_ID+@AENDERUNG))
UPDATE T_ATYP SET ATYP_NR = @AUSSAGE_ID+@AENDERUNG WHERE ((ATYP_TYP_ID = @UMFRAGETYP_ID) AND (ATYP_NR = @AUSSAGE_ID))
UPDATE T_ATYP SET ATYP_NR = @AUSSAGE_ID WHERE ((ATYP_TYP_ID = @UMFRAGETYP_ID) AND (ATYP_NR = 9999999))
Vielen Dank,
Pascal
ALTER PROCEDURE UPD_AUSNR @UMFRAGETYP_ID int, @AUSSAGE_ID int, @AENDERUNG int AS
DECLARE @MAXNR int
SET @MAXNR = (SELECT MAX(ATYP_NR) FROM T_ATYP WHERE ATYP_TYP_ID = @UMFRAGETYP_ID AND ATYP_NR=@AUSSAGE_ID)
IF (@AUSSAGE_ID+@AENDERUNG<@MAXNR) OR (@AUSSAGE_ID+@AENDERUNG<0) RETURN(0)
UPDATE T_ATYP SET ATYP_NR = 9999999 WHERE ((ATYP_TYP_ID = @UMFRAGETYP_ID) AND (ATYP_NR = @AUSSAGE_ID+@AENDERUNG))
UPDATE T_ATYP SET ATYP_NR = @AUSSAGE_ID+@AENDERUNG WHERE ((ATYP_TYP_ID = @UMFRAGETYP_ID) AND (ATYP_NR = @AUSSAGE_ID))
UPDATE T_ATYP SET ATYP_NR = @AUSSAGE_ID WHERE ((ATYP_TYP_ID = @UMFRAGETYP_ID) AND (ATYP_NR = 9999999))
Comment