2013-04-12 4 views
0

У меня есть хранимая процедура, которая строит динамический sql и выполняет его. Он не дает сообщений об ошибках, но не возвращает результаты. Однако, когда я запускаю код в sp вручную, я получаю результаты, которые я ищу. Почему это должно быть? Sp принимает один параметр nvarchar (max), @CLM. ANSI_NULLS, QUOTED_IDENTIFIER и NOCOUNT включены. В sp есть одна временная таблица #tmpAffPeople. Его столбцы - EmpLogin nvarchar (8), Matter nvarchar (15), NameandTitle nvarchar (max), TotalHours decimal (6,2), ClientMatter varchar (max). Текст зр выглядит следующим образом:Динамический SQL в хранимой процедуре не возвращает результат; при запуске в SSMS я получаю результаты

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' 

После этого работает в зр я исполняю @SQLString по телефону выполнить с @SQLString сразу после него в скобках. Затем я бросаю стол. Раньше я делал такие вещи и никогда не испытывал проблем. Что мне не хватает? Я использую SQL Server 2008R2.

+0

Вам необходимо выбрать строки из вашего #tmpAffPeople таблицы, чтобы получить результирующий набор из хранимой процедуры – supergrady

+0

Oh , за любовь к Питу! Спасибо, суперграждане! Если вы опубликуете это как ответ, я продолжу. Это должно быть поздно в пятницу, я только что нашел свое д'о! за неделю. – Melanie

+0

Это случается с лучшими из нас =) – supergrady

ответ

1

Вы должны выбрать строки из вашего #tmpAffPeople таблицы, чтобы получить результирующий набор из хранимой процедуры

 Смежные вопросы

  • Нет связанных вопросов^_^