Type de données CAST / CONVERT vers INT SQL Server

À l'aide de SQL Server 2014, j'ai stocké la procédure et un rapport SSRS avec dataSet qui s'y connecte. La requête DataSet ressemble à:

SELECT * INTO #Test10 FROM OPENQUERY([SERVER1], 'exec [test_1].shp.Report_test1 @FIELDID = [@FIELDID]') SELECT * FROM #Test10 

Ainsi, lorsque l'user tape le numéro dans le paramètre @FIELDID , il reçoit une erreur

Conversion du type de données nvachar en int.

J'ai besoin de convertir datatables @FIELDID dans cette requête en INT. Espérer de l'aide avec la syntaxe correcte.

Pour build le scénario, j'ai créé un exemple de table dans le schéma .dbo Et créé la procédure Report_test1 dans le schéma .shp.

 CREATE TABLE dbo.[sample] (ID INT, Name VARCHAR(50)) GO INSERT INTO dbo.sample VALUES (1,'A'), (2,'B'), (2,'C'), (1,'D'), (3,'A'), (1,'F') GO CREATE PROCEDURE shp.Report_test1 @FIELDID int AS BEGIN SELECT * FROM [Sample] WHERE id=@FIELDID END GO 

Ensuite, j'ai lancé la command ci-dessous openquery et cela fonctionne pour moi ..

 DECLARE @Query NVARCHAR(2000) DECLARE @FIELDID INT=1 SET @Query = N'SELECT * INTO dbo.Test1 FROM OPENQUERY([LAP], ''exec [MyLab].shp.Report_test1 @FIELDID = '+Cast(@FIELDID As Varchar(50))+ ' '')' EXEC (@Query) SELECT * FROM dbo.Test1 

Essayez comme ça et faites le moi savoir.