IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

[T-SQL, SQLserver 2005] Erreur 102 introuvable


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 18
    Points
    18
    Par défaut [T-SQL, SQLserver 2005] Erreur 102 introuvable
    Débutant en T-SQL, je ne comprend pas d'où vient l'erreur qui m'est renvoyé !

    Les erreurs : (toujours la même...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*24
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*27
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*29
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*36
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*37
    Syntaxe incorrecte vers '>'.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*40
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*46
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*51
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*52
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*55
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*61
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*67
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*72
    Syntaxe incorrecte vers ','.
    Msg*102, Niveau*15, État*1, Procédure*calcul_delai, Ligne*73
    Syntaxe incorrecte vers ','.

    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    USE [GDAC]
    GO
     
    CREATE FUNCTION calcul_delai(@DHDebut DateTime,	@Delai Int)
    	RETURNS DateTime
    AS
    BEGIN
    	-- Declare the return variable here
    	DECLARE @DateFin DateTime
    	SET @DateFin = @DHDebut
     
    	DECLARE @HeureDebut TINYINT
    	SET @HeureDebut = DATEPART(hour, @DHDebut)
     
    	DECLARE @JourSuiv BIT
     
        -- Fonction
    		-- Placement de l'horaire dans la journée
    		SET @DateFin =
    		CASE
    			WHEN @HeureDebut < 9 THEN DATEADD(hour, -@HeureDebut+9, @DateFin)
    			WHEN @HeureDebut > 12 AND @HeureDebut < 14 THEN DATEADD(hour, -@HeureDebut+14, @DateFin)
    		END
    		IF @HeureDebut > 18 
    		BEGIN
    			SET DATEADD(hour, -@HeureDebut+9, @DateFin)
    			WHILE dbo.jour_suivant(@DateFin) = 0
    			BEGIN
    				SET DATEADD(day, DATEPART(day,@DHDebut)+1, @DateFin);
    			END
    			SET DATEADD(day, DATEPART(day,@DHDebut)+1, @DateFin);
    		END
     
    	-- Calcul de la première journée si même jour que la demande
    		IF DATEPART(hour, @DateFin) >= 9 AND DATEPART(hour, @DateFin) <= 12
    			BEGIN
    				SET @Delai = @Delai - (12 - DATEPART(hour,@DateFin))
    				SET DATEADD(hour, -DATEPART(hour,@DateFin)+12, @DateFin)
    				IF @Delai != 0 & @Delai >= 4
    					BEGIN
    						SET @Delai = @Delai - (18 - DATEPART(hour,@DateFin))
    						SET DATEADD(hour, -DATEPART(hour,@DateFin)+18, @DateFin)
    					END
    			END	
    		ELSE IF DATEPART(hour, @DateFin) >= 14 AND DATEPART(hour, @DateFin) <= 19
    			BEGIN
    				SET @Delai = (@Delai - (18 - DATEPART(hour,@DateFin)))
    				SET DATEADD(hour, -DATEPART(hour,@DateFin)+18, @DateFin)
    			END
     
    		WHILE @Delai != 0
    			IF dbo.jour_suivant(@DateFin) = 1
    				SET DATEADD(day, DATEPART(day,@DateFin)+1, @DateFin)
    				SET DATEADD(hour, -DATEPART(hour,@DateFin)+9, @DateFin)
    				IF @Delai <= 3
    					BEGIN
    						SET DATEADD(hour, @Delai, @DateFin)
    						SET @Delai = 0;
    						BREAK
    					END
    				ELSE IF @Delai <= 7
    					BEGIN
    						SET DATEADD(hour, @Delai + 2, @DateFin) -- @Delai+2 pour la pause du midi
    						SET @Delai = 0;
    						BREAK
    					END
    				ELSE IF @Delai > 7
    					BEGIN
    						SET DATEADD(hour, 9, @DateFin) -- 7h + 2h de pause
    						SET @Delai = @Delai - 7
    					END
    			ELSE IF dbo.jour_suivant(@DateFin) = 0
    				BEGIN
    					SET DATEADD(day, DATEPART(day,@DateFin)+1, @DateFin)
    					SET DATEADD(hour, -DATEPART(hour,@DateFin)+9, @DateFin)
    				END
    	-- Return the result of the function
    	RETURN @DateFin
     
    END
    GO

    MERCI !

  2. #2
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut Double SET
    Bonjour,

    Vous faites à chaque fois un double SET sur @datefin

    Essayez de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET DATEADD(hour, -@HeureDebut+9, @DateFin)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATEADD(hour, -@HeureDebut+9, @DateFin)
    et ainsi de suite.

    @+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par agemis31 Voir le message
    Bonjour,
    Vous faites à chaque fois un double SET sur @datefin
    @+
    Merci pour toutes ces informations, les erreurs sont corrigées !

    Cependant j'ai un nouveau soucis... Pleins d'erreurs 444...
    Je ne comprend pas pourquoi je n'aurai pas le droit de modifier la valeur que je renvois.... Tu peux m'aider svp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    CREATE FUNCTION calcul_delai(@DHDebut DateTime,	@Delai Int)
    	RETURNS DateTime
    AS
    BEGIN
    	-- Declare the return variable here
    	DECLARE @DateFin DateTime
    	SET @DateFin = @DHDebut
     
    	DECLARE @HeureDebut TINYINT
    	SET @HeureDebut = DATEPART(hour, @DHDebut)
     
        -- Fonction
    		-- Placement de l'horaire dans la journée
    		SELECT @DateFin =
    		CASE
    			WHEN @HeureDebut < 9 THEN DATEADD(hour, -@HeureDebut+9, @DateFin)
    			WHEN @HeureDebut > 12 AND @HeureDebut < 14 THEN DATEADD(hour, -@HeureDebut+14, @DateFin)
    		END
    		IF @HeureDebut > 18 
    		BEGIN
    			SELECT DATEADD(hour, -@HeureDebut+9, @DateFin)
    			WHILE dbo.jour_suivant(@DateFin) = 0
    			BEGIN
    				SELECT DATEADD(day, DATEPART(day,@DHDebut)+1, @DateFin);
    			END
    			SELECT DATEADD(day, DATEPART(day,@DHDebut)+1, @DateFin);
    		END
     
    	-- Calcul de la première journée si même jour que la demande
    		IF DATEPART(hour, @DateFin) >= 9 AND DATEPART(hour, @DateFin) <= 12
    			BEGIN
    				SELECT @Delai = @Delai - (12 - DATEPART(hour,@DateFin))
    				SELECT DATEADD(hour, -DATEPART(hour,@DateFin)+12, @DateFin)
    				IF @Delai >= 4
    					BEGIN
    						SELECT @Delai = @Delai - (18 - DATEPART(hour,@DateFin))
    						SELECT DATEADD(hour, -DATEPART(hour,@DateFin)+18, @DateFin)
    					END
    			END	
    		ELSE IF DATEPART(hour, @DateFin) >= 14 AND DATEPART(hour, @DateFin) <= 19
    			BEGIN
    				SELECT @Delai = (@Delai - (18 - DATEPART(hour,@DateFin)))
    				SELECT DATEADD(hour, -DATEPART(hour,@DateFin)+18, @DateFin)
    			END
     
    		WHILE @Delai != 0
    			IF dbo.jour_suivant(@DateFin) = 1
    				SELECT DATEADD(day, DATEPART(day,@DateFin)+1, @DateFin)
    				SELECT DATEADD(hour, -DATEPART(hour,@DateFin)+9, @DateFin)
    				IF @Delai <= 3
    					BEGIN
    						SELECT DATEADD(hour, @Delai, @DateFin)
    						SELECT @Delai = 0;
    					END
    				ELSE IF @Delai <= 7
    					BEGIN
    						SELECT DATEADD(hour, @Delai + 2, @DateFin) -- @Delai+2 pour la pause du midi
    						SELECT @Delai = 0;
    					END
    				ELSE IF @Delai > 7
    					BEGIN
    						SELECT DATEADD(hour, 9, @DateFin) -- 7h + 2h de pause
    						SELECT @Delai = @Delai - 7
    					END
    			ELSE IF dbo.jour_suivant(@DateFin) = 0
    				BEGIN
    					SELECT DATEADD(day, DATEPART(day,@DateFin)+1, @DateFin)
    					SELECT DATEADD(hour, -DATEPART(hour,@DateFin)+9, @DateFin)
    				END
    	-- Return the result of the function
    	RETURN @DateFin
     
    END
    GO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*23
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*26
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*28
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*35
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*39
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*45
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*50
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*51
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*54
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*59
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*64
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*69
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
    Msg*444, Niveau*16, État*3, Procédure*calcul_delai, Ligne*70
    La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.

    ::// RESOLU :

    L'erreur venait de ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATEADD(day, DATEPART(day,@DateFin)+1, @DateFin)
    En réalité, il fallait écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET @DateFin = DATEADD(day, DATEPART(day,@DateFin)+1, @DateFin)
    Merci pour vos informations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL Server 2005] Erreur lors de l'installation de sql server
    Par cirtadev dans le forum MS SQL Server
    Réponses: 15
    Dernier message: 04/08/2009, 09h29
  2. [SQL Server 2005] Erreur lors du backup de log
    Par nox75 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/02/2009, 14h45
  3. [SQL SERVER 2005] erreur avec sessions
    Par barnet dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2007, 18h16
  4. [C# et SQL Server 2005]Erreur mémoire
    Par dtavan dans le forum Accès aux données
    Réponses: 1
    Dernier message: 05/06/2007, 13h01
  5. [SQL Serveur 2005] Erreur installation
    Par diaboloche dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/05/2007, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo