次のクエリが機能しないのはなぜですか?エラーが発生します:「+」の近くの構文が正しくありません。
SELECT *
INTO #tmpTable
FROM OPENQUERY("127.0.0.1", 'EXEC [DB].dbo.SP_inventory' + @StoreId + ',' + @StartDate ',' + @EndDate)
どのように私は、パラメータを渡すべきである@StoreId
@StartDate
と@EndDate
、それが正常に動作させるために?ありがとう。
OPENQUERY
リテラルが必要です。式にすることはできません。パラメータを渡す必要がある場合。1つの方法は動的SQLを使用していますが、「醜い」ものになる可能性があります。しかし、これは不完全です。
DECLARE @StoreId int = 7,
@StartDate date = '20190101',
@EndDate date = '20190701';
--Values shoukd be set
DECLARE @SQL nvarchar(MAX);
DECLARE @CRLF nchar(2) = NCHAR(13) + NCHAR(10);
SET @SQL = N'{SELECT Statement parts}' + @CRLF +
N'FROM OPENQUERY("172.16.111.11", N''EXEC [DB].dbo.SP_inventory' + CONVERT(varchar(10),@StoreId) + ',' + QUOTENAME(CONVERT(varchar,@StartDate,112),'''') + ',' + QUOTENAME(CONVERT(varchar,@EndDate,112),'''') +') OQ';
PRINT @SQL; --Your best Friend
EXEC sp_executesql @SQL;
したがって、代替方法はを使用しEXECUTE ... AT
ています。これには、リンクサーバーが必要です。
EXEC (N'[DB].dbo.SP_inventory ?, ?, ?;',@StoreId, @StartDate, @EndDate) AT [{Linked Server Name}];
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加