SQL Server 2008 R2(T-SQL)を使用していて、動的SQLコードがあり、一時テーブルにデータを挿入しています。新しいクエリウィンドウまたはPRINTコードでコードを実行してから、新しいクエリウィンドウで実行すると、すべて問題ありませんが、ストアドプロシージャからこれを実行しようとすると、エラーがスローされます。
Msg 156, Level 15, State 1, Procedure users, Line 3
Incorrect syntax near the keyword 'FROM'.
で行を削除するとINSERT INTO #viewsTmp (webId, listId, viewName, viewTitle)
、コードは正常に実行されます。同じストアドプロシージャ内に上記の同様のコードがあり、そのコードは問題ありません。
臨時雇用者テーブル:
CREATE TABLE #viewsTmp
(
webId uniqueidentifier,
listId uniqueidentifier,
viewName NVARCHAR(128),
viewTitle NVARCHAR(255)
)
変数@databaseNameは、ストアドプロシージャのパラメータとして宣言されています
@databaseName NVARCHAR(255)
新しいクエリウィンドウでは問題ないが、ストアドプロシージャから実行された場合は問題ないコード:
SET @sql = N'
INSERT INTO #viewsTmp (webId, listId, viewName, viewTitle)
SELECT c.tp_WebId, c.tp_ID, b.LeafName, c.tp_Title
FROM (
SELECT *
FROM (
SELECT [ListId], [LeafName], [Type], [WebId]
,ROW_NUMBER() OVER (PARTITION BY ListId ORDER BY DirName) AS RowNumber
FROM ['+@databaseName+'].[dbo].[Docs]
WHERE [LeafName] = ''users''
) AS a
WHERE [RowNumber] = 1 AND [Type] = 1
) AS b
INNER JOIN
(SELECT [tp_WebId], [tp_ID], [tp_Title] FROM ['+@databaseName+'].[dbo].[Lists])
AS c
ON b.ListId = c.tp_ID AND b.WebId = c.tp_WebId
';
--PRINT @sql
exec sp_executesql @sql;
このコードの何が問題になっていますか?