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 :

Probleme RAISERROR sql server 2008


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut Probleme RAISERROR sql server 2008
    Bonjour tout le monde....

    j'ai créer une fonction qui retourne un tableau de fournisseur qu'on a saisie son code le probleme c'est dans le cas ou il ne trouve pas ce fournisseur je comprends toujours pas pourquoi ca donne l'erreur dans la ligne ou il se trouve la fonction RAISERROR


    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
    create function CA2_Fournisseur (
    @codefournisseur int,
    @annee smalldatetime
    )
    returns @toto table (numFou int null , nomfou varchar(25)null,CA real null)
    as
    begin
    declare
    @tempo table (numFou int , nomfou varchar(25),CA real)
    if (not exists( select numFou from fournis where numFou =@codefournisseur))
    begin
    RAISERROR(50005,1,12,@codefournisseur)
    end
    else
    insert into @tempo
    SELECT FOURNIS.NUMFOU,FOURNIS.NOMFOU,sum((LIGCOM.QTECDE*LIGCOM.PRIUNI)*1.2) as 'CA Potentiel'
    FROM  FOURNIS,LIGCOM,ENTCOM
    WHERE
    entcom.numcom = ligcom.numcom and
    FOURNIS.NUMFOU  = entcom.numfou
    and
    FOURNIS.NUMFOU=@codefournisseur
    and
    year( Datcom) = @annee
    GROUP BY FOURNIS.NUMFOU, FOURNIS.NOMFOU
    return
    end
    Voici le message d'erreur :

    Msg 443, Level 16, State 14, Procedure CA2_Fournisseur, Line 12

    Invalid use of a side-effecting operator 'RAISERROR' within a function.

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Hello,

    Tu ne peux pas utiliser RAISERROR dans une fonction. Nous ne savons pas comment tu utilises ta fonction et je ne fais ici que des suppositions.

    Pourquoi ne pas tout simplement le résultat de ta requête en sortie de la fonction. Si ta fonction ne retourne rien c'est que le code fournisseur ou que l'année ou le couple fournisseur / année ne donne rien. Il n'y a pas forcément besoin de générer une erreur.

    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
    CREATE FUNCTION CA2_Fournisseur (
     @codefournisseur int,
     @annee smalldatetime
    )
    returns @toto TABLE (numFou int NULL , nomfou varchar(25)NULL,CA real NULL)
    AS
    begin
     declare
    @tempo TABLE (numFou int , nomfou varchar(25),CA real)
     
    INSERT INTO @toto
    SELECT 
     FOURNIS.NUMFOU,
     FOURNIS.NOMFOU,
     sum((LIGCOM.QTECDE*LIGCOM.PRIUNI)*1.2) AS 'CA Potentiel'
    FROM  FOURNIS
     JOIN ENTCOM
      ON FOURNIS.NUMFOU  = entcom.numfou
     JOIN LIGCOM
      ON entcom.numcom = ligcom.numcom
    WHERE FOURNIS.NUMFOU=@codefournisseur
     AND year( Datcom) = @annee
    GROUP BY FOURNIS.NUMFOU, FOURNIS.NOMFOU
    RETURN
    end
    ++

Discussions similaires

  1. probleme delete - sql server 2008
    Par laure07 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 24/10/2010, 12h51
  2. Réponses: 1
    Dernier message: 27/07/2009, 11h45
  3. Probleme de Connexion SQL server 2008 & VB 2008
    Par kashomi dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/11/2008, 09h31
  4. PROBLEME D'INSTALLATION DE SQL SERVER 2008
    Par mayce dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/06/2008, 12h55

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