Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

wie man openrowset verwendet, um eine gespeicherte Prozedur mit Parametern auszuführen

Sowohl OPENROWSET als auch OPENDATASOURCE sollten nur für den Zugriff auf externe Daten verwendet werden, beispielsweise für Quick-and-Dirty-Lösungen oder wenn es nicht möglich ist, einen permanent verknüpften Server zu konfigurieren. Diese Funktionen bieten nicht die gesamte Funktionalität, die von einem Verbindungsserver verfügbar ist. Die Argumente von OPENROWSET und OPENDATASOURCE unterstützen keine Variablen. Sie müssen als String-Literal angegeben werden. Wenn Variablen als Argumente an diese Funktionen übergeben werden müssen, kann ein Abfragestring, der diese Variablen enthält, dynamisch konstruiert und mit der EXEC-Anweisung ausgeführt werden. Ähnlich wie (nicht syntaktisch geprüft)

DECLARE @sqlCommand varchar(1000)
SET @sqlCommand = 'SELECT *
FROM OPENROWSET(''SQLNCLI'',''server=.\sqlexpress;Trusted_Connection=yes'',''SET NOCOUNT ON;SET FMTONLY OFF;EXEC [BSC_DB].dbo.SelectScorecardGraphData ''''' + cast(@param1 as varchar(10)) + ''''',''' + cast(@param2 as varchar(n)) ''')'
EXEC @sqlCommand

Und so weiter ... Ich hoffe, das hilft. Mit freundlichen Grüßen, Stefan