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