À 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.