Bonjour,
Je début sur SQL-Server et m'arrache les cheveux.
Voila j'ai développé une base access 2010 que j'ai migré en adp et je suis entrain de reprendre le code pour finaliser cette migration.
Cette application importe des donnée de différentes sources pour les stocker en base.
Au cours des importations, je commence par vérifier si de nouvelles valeurs apparaissent afin de les entrer en table "primaire" afin de créer les ids.
Pour ce faire je pensais utiliser une procédure stocké coté SQL-Server. J'ai donc créé la procédure suivante:
Quand je cherche à l'exécuter, par la commande:
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 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE Verif_ListdansRef @Table_Imp varchar(50), @Champ_Imp varchar(50), @Table_ref varchar(50), @Champ_dest varchar(50) = NULL AS BEGIN DECLARE @Req nvarchar(max) SET NOCOUNT ON SET @Req = N'INSERT INTO @Table_ref (@Champ_dest) SELECT @Champ_Imp FROM (SELECT @Table_Imp.@Champ_Imp From @Table_Imp GROUP BY @Table_Imp.@Champ_Imp) AS Temp LEFT JOIN @Table_ref ON Temp.@Champ_Imp = @Table_ref.@Champ_dest WHERE Temp.@Champ_Imp Is Not Null AND @Table_ref.@Champ_dest is not null' EXEC sp_executesql @req ,N'@Table_Imp varchar(50),@Champ_Imp varchar(50),@Table_ref varchar(50),@Champ_dest varchar(50)' ,@Table_Imp=@Table_Imp ,@Champ_Imp=@Champ_Imp ,@Table_ref=@Table_ref ,@Champ_dest=@Champ_dest END GO
J'obtiens l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 USE [Pilotage CS] EXECUTE Verif_ListdansRef 'USysImport_RFC_CCM','Client','T_Client','Nom_client'
Msg*102, Niveau*15, État*1, Ligne*1
Syntaxe incorrecte vers '@Champ_dest'.
Msg*102, Niveau*15, État*1, Ligne*3
Syntaxe incorrecte vers '@Champ_Imp'.
j'ai beau fouiller je vois pas ce qui lui plait pas.
Serai-t-il plus simple de construire la requête dans access sous forme de nvarchar et de passer cette variable en paramètre de ma procédure? Dans ce cas comment l'exécuter?
Cordialement
Partager