1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
-- =============================================
-- Description: Retourne un compteur unique
-- Exemple d'appel : execute sp_generateCompteur_test 40
CREATE PROCEDURE [dbo].[sp_generateCompteur_test]
@param_module tinyint, -- n° module
@param_out_libelle_erreur varchar(100) = '' OUTPUT -- libellé de l'erreur
AS
BEGIN
SET NOCOUNT ON;
DECLARE @compteurEnBase int -- valeur du compteur lu en base
SET @compteurEnBase = -1
-- Récupération du compteur et de la date actuelles
SELECT @compteurEnBase = tbl_compteur FROM TBL WHERE tbl_module = @param_module
IF (@@error <> 0)
BEGIN
SET @param_out_libelle_erreur = 'Impossible de récupérer le compteur en base'
RETURN 1
END
IF (@compteurEnBase = -1)
BEGIN
SET @param_out_libelle_erreur = 'enregistrement en base non présent'
RETURN 1
END
-- incrémentation du compteur
UPDATE TBL SET tbl_compteur = tbl_compteur + 1 WHERE tbl_module = @param_module AND tbl_compteur = @compteurEnBase
IF (@@error <> 0)
BEGIN
SET @param_out_libelle_erreur = 'Impossible de mettre à jour le compteur (test 3)'
RETURN 1
END
ELSE
BEGIN
-- renvoi du compteur
SELECT CAST(@param_module as varchar)+ right('00000'+cast((@compteurEnBase+1) as varchar),5)
END
END |
Partager