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 :

Problème update dans une procédure stockée [2016]


Sujet :

Développement SQL Server

  1. #1
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut Problème update dans une procédure stockée
    Bonjour
    J'ai un problème avec une procédure stockée sur sql server 2016 qui sur update m'affiche une erreur de syntaxe.
    Voila mon code, je ne sais pas si le reste est juste mais l'erreur de syntaxe sur l'update me laisse bloqué

    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
    create proc for_dispo  @rep int ,@select_for char(25), @annee int
    as begin
     declare @for table (formation_dispo char(25))
     declare @t char(25) 
     declare @emp_for table (id_empp char(25))
     insert @for select desision_fcb from FCB where desision_fcb  in (select nom_theme from theme)
     if   exists (select formation_dispo from  @for where formation_dispo= @select_for ) and (@rep=1)  
     set  @t= (select id_theme from theme where nom_theme=@select_for)
     insert  formation (id_theme) values (@t)
    insert @emp_for select id_emp from employer e inner join FCB_employer fe on e.id_emp=fe.id_emp inner join FCB f on fe.id_fcb=f.id_fcb   
    where desision_fcb=@select_for and datepart(y,date_validation_fcb)=@annee
    insert  session_emp (id_emp) values((select id_empp from @emp_for)
    update session_emp set id_for=(select id_for from formation where id_theme=@t ) where
     exists (select id_empp from @emp_for where id_empp in (select id_emp from session_emp))  
    end
    merci d'avance

  2. #2
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut
    ya il une reponse SVP

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Postez le message d'erreur, vous aurez plus de chance d'avoir des réponses...

    en attendant, penchez vous sur la ligne 12 où le VALUES semble de trop, et où il y a également un problème sur les parenthèses ouvrantes/fermantes.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Faites un minimum d'effort d'indentation et de présentation de votre code.

  5. #5
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut
    je vous acorde l'erreur de ne pas indiquer le message d'erreur , et vous aviez raison c'etait la parenthese , j'ai retravailler ma procedure ainsi:

    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
    alter proc for_dispo  @rep int ,@select_for char(25)
    as begin
     declare @for table (formation_dispo char(25))
     declare @t char(25) 
     declare @emp_for table (id_empp char(25))
     insert @for select desision_fcb from FCB where desision_fcb  in (select nom_theme from theme)
     if   exists (select formation_dispo from  @for where formation_dispo= @select_for ) and (@rep=1)  
     set  @t= (select id_theme from theme where nom_theme=@select_for)
     insert  formation (id_theme) values (@t)
    insert @emp_for select e.id_emp from employer e inner join FCB_employer fe on e.id_emp=fe.id_emp inner join FCB f on fe.id_fcb=f.id_fcb   
    where desision_fcb=@select_for and datepart(year,date_validation_fcb)=(select datepart(year,getdate()))
    insert  session_emp (id_emp) values((select id_empp from @emp_for))
    update session_emp set id_for=(select id_for from formation where id_theme=@t ) where
     exists (select id_empp from @emp_for where id_empp in (select id_emp from session_emp))  
    end
    et jai le message d'erreur suivant :

    ""(15 row(s) affected)

    (1 row(s) affected)

    (0 row(s) affected)
    Msg 515, Level 16, State 2, Procedure for_dispo, Line 12 [Batch Start Line 466]
    Impossible d'insérer la valeur NULL dans la colonne 'id_emp', table 'DRHF2.dbo.session_emp'. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT.
    L'instruction a été arrêtée.""

    car l'insertion de la variable table(@emp_for) a la table session_emp n'a pas marcher je crois

    Merci de m'aider

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Enlevez le VALUES (ainsi que les parenthèses inutiles au passage) à la ligne concernée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/04/2008, 21h56
  2. Réponses: 4
    Dernier message: 16/12/2005, 16h25
  3. Problème Alter view dans une procédure stockée
    Par adjava dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2005, 17h45
  4. Problème d'alter table dans une procédure stockée
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/03/2005, 09h19
  5. Problème avec un LIKE dans une procédure stockée
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2004, 14h38

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