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

MS SQL Server Discussion :

Erreur Server: Msg 8115, Level 16, State 2, Procedure


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Points : 114
    Points
    114
    Par défaut Erreur Server: Msg 8115, Level 16, State 2, Procedure
    Je suis en train de faire un procedure stocker que voici

    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
    CREATE PROCEDURE [dbo].[psListeAnnonceResume] 
    	@strEmailClient		VARCHAR(100),
    	@iOrderBy		TINYINT
     
    AS
     
    SELECT   top 10  	dbo.tblAnnonce.PK_Annonce, 
    			dbo.tblAnnonce.strTitreAnnonce, 
    			dbo.tblAnnonce.curPriceAnnonce, 
    			dbo.tblAnnonce.dteAjoutAnnonce, 
    			dbo.tblAnnonce.dteLastUpdateAnnonce, 
    			autodb.tblCodePostal.strVilleCodePostal,
    			autodb.tblCodePostal.decLatitudeCodePostal, 
    			autodb.tblCodePostal.decLongitudeCodePostal,
    			tblLast.dteLastView
    FROM         dbo.tblAnnonce 
    	LEFT OUTER JOIN
                          (SELECT * 
    		FROM dbo.tblAnnonceClientLastView 
    		WHERE FK_Client = (SELECT PK_CLIENT
    					FROM dbo.tblClient
    					WHERE strEmailClient = @strEmailClient)) as tblLast ON dbo.tblAnnonce.PK_Annonce =tblLast.FK_Annonce 
    	LEFT OUTER JOIN
                          autodb.tblCodePostal ON dbo.tblAnnonce.FK_CodePostal = autodb.tblCodePostal.PK_CodePostal
    WHERE     (dbo.tblAnnonce.bVenduAnnonce = 0) AND (dbo.tblAnnonce.bDeleteAnnonce = 0) AND (dbo.tblAnnonce.bActiveAnnonce = 1)
    ORDER BY CASE	 WHEN @iOrderBy = 1 THEN dbo.tblAnnonce.dteAjoutAnnonce 
    			WHEN @iOrderBy = 2 THEN dbo.tblAnnonce.curPriceAnnonce
    			WHEN @iOrderBy = 3 THEN  dbo.tblAnnonce.dteLastUpdateAnnonce 
     
    	END
    GO
    Elle fonctionne tres bien sauf l'orsque que j'envois 2 pour iOrderBy.
    psListeAnnonceResume 'autoconsignation@gmail.com', 2
    Je recois un message
    Server: Msg 8115, Level 16, State 2, Procedure psListeAnnonceResume, Line 7
    Arithmetic overflow error converting expression to data type datetime.
    Jai essayer dans le SQL Quary Analyzer de refaire le meme sélect mais sans variable et tout fonctionne tres bien :S

    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
    SELECT   top 10  	dbo.tblAnnonce.PK_Annonce, 
    			dbo.tblAnnonce.strTitreAnnonce, 
    			dbo.tblAnnonce.curPriceAnnonce, 
    			dbo.tblAnnonce.dteAjoutAnnonce, 
    			dbo.tblAnnonce.dteLastUpdateAnnonce, 
    			autodb.tblCodePostal.strVilleCodePostal,
    			autodb.tblCodePostal.decLatitudeCodePostal, 
    			autodb.tblCodePostal.decLongitudeCodePostal,
    			tblLast.dteLastView
    FROM         dbo.tblAnnonce 
    	LEFT OUTER JOIN
                          (SELECT * 
    		FROM dbo.tblAnnonceClientLastView 
    		WHERE FK_Client = (SELECT PK_CLIENT
    					FROM dbo.tblClient
    					WHERE strEmailClient = 'autoconsignation@gmail.com')) as tblLast ON dbo.tblAnnonce.PK_Annonce =tblLast.FK_Annonce 
    	LEFT OUTER JOIN
                          autodb.tblCodePostal ON dbo.tblAnnonce.FK_CodePostal = autodb.tblCodePostal.PK_CodePostal
    WHERE     (dbo.tblAnnonce.bVenduAnnonce = 0) AND (dbo.tblAnnonce.bDeleteAnnonce = 0) AND (dbo.tblAnnonce.bActiveAnnonce = 1)
    ORDER BY  dbo.tblAnnonce.curPriceAnnonce

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    SQL est un langage fortement typé. Ton ORDER BY retourne différents types de données selon le critère passé en paramètre. Tu dois uniformiser ces types de données, par des CAST() par exemple, pour que le choix du paramètre n'influe pas sur un ORDER BY qui traiterait des types différents.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Membre régulier
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Points : 114
    Points
    114
    Par défaut
    j'ai essayer de change mon order by et ca ne marche pas

    voici avec quoi je suis rendu
    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
    CREATE PROCEDURE [dbo].[psListeAnnonceResume] 
    	@strEmailClient		VARCHAR(100),
    	@iOrderBy		TINYINT
     
    AS
     
    SELECT   top 10  	dbo.tblAnnonce.PK_Annonce, 
    			dbo.tblAnnonce.strTitreAnnonce, 
    			dbo.tblAnnonce.curPriceAnnonce, 
    			dbo.tblAnnonce.dteAjoutAnnonce, 
    			dbo.tblAnnonce.dteLastUpdateAnnonce, 
    			autodb.tblCodePostal.strVilleCodePostal,
    			autodb.tblCodePostal.decLatitudeCodePostal, 
    			autodb.tblCodePostal.decLongitudeCodePostal,
    			tblLast.dteLastView
    FROM         dbo.tblAnnonce 
    	LEFT OUTER JOIN
                          (SELECT * 
    		FROM dbo.tblAnnonceClientLastView 
    		WHERE FK_Client = (SELECT PK_CLIENT
    					FROM dbo.tblClient
    					WHERE strEmailClient = @strEmailClient)) as tblLast ON dbo.tblAnnonce.PK_Annonce =tblLast.FK_Annonce 
    	LEFT OUTER JOIN
                          autodb.tblCodePostal ON dbo.tblAnnonce.FK_CodePostal = autodb.tblCodePostal.PK_CodePostal
    WHERE     (dbo.tblAnnonce.bVenduAnnonce = 0) AND (dbo.tblAnnonce.bDeleteAnnonce = 0) AND (dbo.tblAnnonce.bActiveAnnonce = 1)
    ORDER BY CASE	 WHEN @iOrderBy = 1 THEN cast(dbo.tblAnnonce.dteAjoutAnnonce  AS DATETIME)
    			WHEN @iOrderBy = 2 THEN cast(dbo.tblAnnonce.curPriceAnnonce AS MONEY)
    			WHEN @iOrderBy = 3 THEN  CAST(dbo.tblAnnonce.dteLastUpdateAnnonce  AS DATETIME)
     
    	END
    GO
    De plus les choix 1 et 3 devrais etre en DESC mais je ne réussi pas encore. Je suis en train de me demander si je ne devrais pas faire ma requette sql plutot en asp?

  4. #4
    Membre régulier
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Points : 114
    Points
    114
    Par défaut
    toujours rien?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    pouvez-vous poster la structure des tables utilisées dans la requête ?
    merci
    Emmanuel T.

Discussions similaires

  1. [ASE]Msg 11918, Level 16 lors d'un reorg rebuild ?
    Par Invité dans le forum Adaptive Server Enterprise
    Réponses: 8
    Dernier message: 15/04/2008, 14h52
  2. [BCK]Load dump 12.5.3 (erreur Msg 3120, Level 16, State 1- sort order)
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 5
    Dernier message: 25/09/2007, 07h44
  3. [12.5.0.1]Msg 4207, Level 16, State 4
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 15/08/2007, 07h59
  4. [ASE 12.5.4] encryption + Msg 1530, Level 16, State 2
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 18/05/2007, 13h36
  5. [WDT] Erreur server
    Par Mister Nono dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/02/2006, 09h23

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