Bonjour à toutes et à tous,
J'aurais juste besoin d'une confirmation :
avec SQL Server, les fonctions stockées ne permettent pas d'ajouter des données ou de mettre à jour des champs (insert, update) ?!
J'ai voulu compilé ce qui suit afin de récupérer l'ID de la nouvelle ligne ajouté :
mais le système me dit :
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 CREATE FUNCTION dbo.InsertLigneProduction ( @Annee int, @Mois int, @Jour int, @CodeTranche varchar(20), @Equipe varchar(1) ) RETURNS @MaTable TABLE(IDNP int) AS BEGIN DECLARE @ID int INSERT INTO T_Production_L1 (annee, jour, mois, code_tranche_h, lettre_equipe) VALUES (@Annee, @Jour, @Mois, @CodeTranche, @Equipe); SELECT @ID=@@IDENTITY; INSERT INTO @MaTable(IDNP) VALUES(@ID); RETURN; END
Du coup, je passe par une procédure stockée de ce type :Utilisation non valide d'un opérateur présentant des effets secondaires ou d'un opérateur dépendant du temps 'INSERT' dans une fonction.
N'y a t'il vraiment pas de solutions pour faire ceci avec des fonctions ?
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 CREATE PROCEDURE dbo.InsertLigneProduction ( @Annee int, @Mois int, @Jour int, @CodeTranche varchar(20), @Equipe varchar(1) @NU int OUTPUT ) AS BEGIN /***Ajout des données***/ INSERT INTO T_Production_L1 (annee, jour, mois, code_tranche_h, lettre_equipe) VALUES (@Annee, @Jour, @Mois, @CodeTranche, @Equipe); /***Récupération de l'identifiant***/ SELECT @NU=@@IDENTITY; END
D'avance merci,
Cordialement,
Alex01
Partager