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 :

Erreur lors de l'exécution d'une procédure stockée


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut Erreur lors de l'exécution d'une procédure stockée
    Bonjour,

    J'ai une erreur quand j’exécute ma procédure stockée et je n'arrive pas à repérer le problème.

    Voici le code de me procédure :

    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
    ALTER PROCEDURE [dbo].[usp_MSP_Extract_ActivitiesList]
    (
     @ProjectName NVARCHAR(MAX)
    )
    AS
    BEGIN
    --usp_MSP_Extract_ListeProjet
    --[MSP_GET_ProjectCodeByTask]
    	SET NOCOUNT ON
     
    	SELECT [Restauration_DB].[dbo].[MSP_GET_ProjectCodeByTask1] () AS [CodeProjet], 
    	T.[TASK_ID]
    	INTO #Temp
    	FROM [dbo].[MSP_ASSIGNMENTS]A
    	LEFT JOIN [dbo].[MSP_PROJECTS]P ON A.[PROJ_UID]=P.[PROJ_UID]
    	LEFT JOIN [dbo].[MSP_TASKS]T ON A.[TASK_UID]=T.[TASK_UID]
    	LEFT JOIN [dbo].[MSP_RESOURCES]R ON A.[RES_UID]=R.[RES_UID]
    	LEFT JOIN [dbo].[MSP_RES_CUSTOM_FIELD_VALUES]B ON A.[RES_UID]=B.[RES_UID]
    	LEFT JOIN [dbo].[MSP_CUSTOM_FIELDS]C ON B.[MD_PROP_ID]=C.[MD_PROP_ID]
    	LEFT JOIN [dbo].[MSP_LOOKUP_TABLE_VALUES]D ON B.[CODE_VALUE]= D.[LT_STRUCT_UID]
    	WHERE	p.[PROJ_NAME] =@ProjectName AND
    			D.LT_VALUE_TEXT IS NOT NULL
     
    	--DEBUT - Il faut afficher les projets dans l'ordre de création des tâches
    	SELECT DISTINCT [CodeProjet], 
    	CASE WHEN CHARINDEX('#', [CodeProjet]) > 0 THEN 
    		LEFT([CodeProjet], CHARINDEX('#', [CodeProjet]) - 1)
    	ELSE 
    		CASE WHEN CHARINDEX('-', [CodeProjet]) > 0 THEN 
    			LEFT([CodeProjet], CHARINDEX('-', [CodeProjet]) - 1)
    		ELSE 
    			[CodeProjet]
    		END
    	END AS [CodeOnly],
    	[TASK_ID]
    	INTO #Results
    	FROM #Temp
    	WHERE [CodeProjet] IS NOT NULL
     
    	SELECT [CodeProjet] 
    	FROM (
    		SELECT [CodeProjet], [CodeOnly], MIN([TASK_ID]) as [TASK_ID]
    		FROM #Results
    		GROUP BY [CodeOnly], [CodeProjet] 
    	) o
    	ORDER BY [TASK_ID] ASC
    	--FIN - Il faut afficher les projets dans l'ordre de création des tâches
     
    	DROP TABLE #Results
    	DROP TABLE #Temp
    END
    Et l'erreur est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
    The statement has been terminated.
    Avez vous une idée sur le problème .

    Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Il est probable que ceci :
    Restauration_DB.dbo.MSP_GET_ProjectCodeByTask1 ()
    Soit une fonction table qui renvoie plusieurs lignes.
    D'autre part pourquoi autant de tables temporaires stupidement inutiles et horriblement couteuses ? Vous avez un serveur trop musclé et vous testez sa capacité a encaisser plus de charge que nécessaire ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Bonjour,

    Vous avez bien raison au sujets des tables temporaires mais ce n'est pas moi qui a développé cette base de données et je dois juste lui apporter des modifications.

    Pour la procédure elle fait appel à une fonction scalaire qui est comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ALTER function [dbo].[MSP_GET_ProjectCodeByTask1] ()
        returns nvarchar
        as
        begin
     
        return (select TEXT_VALUE FROM dbo.MSP_TASK_CUSTOM_FIELD_VALUES  b2
        LEFT JOIN [ProjectServer_PWA_Published].[dbo].[MSP_CUSTOM_FIELDS]B ON (B.[MD_PROP_ID] = b2.[MD_PROP_ID])
        LEFT JOIN [ProjectServer_PWA_Published].[dbo].[MSP_LOOKUP_TABLE_VALUES]C ON b2.[CODE_VALUE]= C.[LT_STRUCT_UID]
        WHERE MD_PROP_NAME = 'Code Projet')
     
        end

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    C'est donc bien cette fonction qui est stupidement écrite !
    Un tel SELECT ne peut en aucun cas garantir qu'il n'y aura qu'une seule ligne retournée. D’où votre message d'erreur.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Bonjour,

    Je dois modifier comment ma fonction ?

    Merci

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Comment pourrais-je le savoir ? ça dépend de votre fonctionnel !!!!

    Mais si vous voulez une consultation pour faire le boulot à votre place, sachez que mes tarifs commencent à 800 € HT par jour pour des missions longues (plus de 40 jours) à 1 600 € pour des missions courtes d'expertise....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Timeout lors de l'exécution d'une procédure stockée
    Par duffman dans le forum Développement
    Réponses: 15
    Dernier message: 03/04/2012, 01h26
  2. [XL-2003] Erreur lors de l'exécution d'une procédure
    Par pacocnec dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2009, 12h39
  3. Erreurs lors de l'exécution d'une procédure
    Par vanesa dans le forum PL/SQL
    Réponses: 2
    Dernier message: 05/01/2009, 17h48
  4. Erreur lors de l'appel d'une procédure stockée
    Par aperrin dans le forum JDBC
    Réponses: 1
    Dernier message: 04/01/2008, 13h54
  5. Erreur d'Exécution d'une procédure stockée
    Par h.Madjid dans le forum SQL
    Réponses: 1
    Dernier message: 05/09/2007, 19h34

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