動的 SQL を作成して実行するストアド プロシージャがあります。エラー メッセージは表示されませんが、結果は返されません。ただし、sp でコードを手動で実行すると、探している結果が得られます。これはなぜでしょうか?sp は、1 つの nvarchar(max) パラメータ @CLM を取ります。ANSI_NULLS、QUOTED_IDENTIFIER、および NOCOUNT が ON です。SP には 1 つの一時テーブル #tmpAffPeople があります。その列は、EmpLogin nvarchar(8)、Matter nvarchar(15)、NameandTitle nvarchar(max)、TotalHours decimal(6,2)、ClientMatter varchar(max) です。SPのテキストは次のとおりです。
DECLARE @SQLString AS nvarchar(max)
SET @SQLString = ';WITH Emps (EmpLogin, AttorneyAndTitle)
AS
(SELECT EmpLogin,
CASE WHEN EmpTermDate IS NULL OR EmpTermDate = ' + '''' + '''' + ' THEN LastName + ' + '''' + ', ' + '''' + ' + FirstName + ' + ''''+ ' [' + '''' + ' + Title + ' + '''' + '] ' + '''' +
'ELSE LastName + ' + '''' + ', ' + '''' + ' + FirstName + ' + '''' + ' [' + '''' + ' + Title +' + '''' +'] (inactive) ' + '''' + ' END as FullName
FROM [LitigationHold].[dbo].[Employees]
where JobCode IN (' + '''' + '100' + '''' + ',' + '''' + '300' + '''' + ',' + '''' + '400' + '''' + ',' + '''' + '500' + '''' + ',' + '''' + '700' + '''' + ',' + '''' + '800' + '''' + ',' + '''' + '1801' + '''' + '))
INSERT INTO #tmpAffPeople
SELECT t.[EmpLogin],t.Matter, e.AttorneyAndTitle, SUM([Workhours]) AS TotalHours,
c.ClientName + ' + '''' + '/' + '''' + ' + em.MatterDesc
FROM TimeCard t
INNER JOIN Emps e
ON e.EmpLogin = t.EmpLogin
INNER JOIN EliteMatter em
ON t.Matter = em.MatterName
INNER JOIN EliteClient c
ON c.ClientNum = em.ClientNum
WHERE t.Matter IN (' + @CLM + ')
GROUP BY t.EmpLogin, c.ClientName, em.MatterDesc, t.Matter, e.AttorneyAndTitle
ORDER BY TotalHours'
これが実行された後、sp で @SQLString の直後に @SQLString を使用して execute を呼び出して @SQLString を実行します。それから私はテーブルを落とします。私は以前にこの種のことをしたことがありますが、問題はありませんでした。私は何が欠けていますか?SQL Server 2008R2 を使用しています。