none
Fonction d'insertion table SQL server RRS feed

  • Question

  • Bonjour,

    Voici ma fonction, pour le moment elle renvoie 0.

    ALTER FUNCTION dbo.AjouterBatiment    (@repere nchar(10), @description nchar(150) )    
    RETURNS int
    AS
        BEGIN    
        INSERT INTO dbo.BATIMENT(REPEREBATIMENT,DESCRIPTIONBATIMENT) VALUES(@repere, @description);
            DECLARE @ret int;
            SET @ret = 0;
        RETURN  @ret;
        END

    Voici le message d'erreur:
    Utilisation non valide d'un opérateur présentant des effets secondaires INSERT dans une fonction.
    Que dois je faire?

    Gérard

    lundi 8 février 2016 16:10

Réponses

  • Bonjour,

    On ne peux pas faire de modification de table dans une function , il faut utilisée une procedure stockée.

    Dans ce cas :

    CREATE PROCEDURE dbo.AjouterBatiment    (@repere nchar(10), @description nchar(150) )   
    AS
         BEGIN   
              INSERT INTO dbo.BATIMENT(REPEREBATIMENT,DESCRIPTIONBATIMENT) VALUES(@repere, @description)
              DECLARE @ret int
              SET @ret = 0
         SELECT  @ret
         END

    • Marqué comme réponse GP79 mardi 9 février 2016 15:48
    mardi 9 février 2016 15:14

Toutes les réponses

  • Bonjour, Gérard,

    Veuillez consulter le thread en bas :
    Invalid use side-effecting operator Insert within a function
    Je vous remercie par avance de votre retour.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 9 février 2016 15:09
    Modérateur
  • Bonjour,

    On ne peux pas faire de modification de table dans une function , il faut utilisée une procedure stockée.

    Dans ce cas :

    CREATE PROCEDURE dbo.AjouterBatiment    (@repere nchar(10), @description nchar(150) )   
    AS
         BEGIN   
              INSERT INTO dbo.BATIMENT(REPEREBATIMENT,DESCRIPTIONBATIMENT) VALUES(@repere, @description)
              DECLARE @ret int
              SET @ret = 0
         SELECT  @ret
         END

    • Marqué comme réponse GP79 mardi 9 février 2016 15:48
    mardi 9 février 2016 15:14
  • Merci beaucoup Frédéric
    J'ai pu enregistré la procédure, il me reste à la tester.
    Gérard

    mardi 9 février 2016 15:48