Syntaxe procedure stockée
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:
Code:
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 |
Quand je cherche à l'exécuter, par la commande:
Code:
1 2
| USE [Pilotage CS]
EXECUTE Verif_ListdansRef 'USysImport_RFC_CCM','Client','T_Client','Nom_client' |
J'obtiens l'erreur suivante:
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.:oops:
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