2013-05-29 3 views
1

В следующем запросе параметр formid вызывает ошибку. Я попытался использовать статическое значение вместо параметра formid, и в этом случае запрос будет успешным. Я использую неправильный синтаксис? Этот поток, похоже, решает проблему, но синтаксис кажется таким же.Динамический сводный запрос с параметром

ALTER PROCEDURE [dbo].[customFormReport] 
(
    @formid int 
) 
AS 
BEGIN 
SET NOCOUNT ON 

DECLARE @cols AS NVARCHAR(MAX), 
    @query AS NVARCHAR(MAX) 

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(fieldname) 
        from FormResponse 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

set @query = 'SELECT FormID, FormSubmissionID,' + @cols + ' from 
      (
       SELECT FormID, FormSubmissionID, fieldname, value 
       FROM FormResponse WHERE FormID = ' + @formid + ' 
      ) x 
      pivot 
      (
       max(value) 
       for fieldname in (' + @cols + ') 
      ) p ' 

execute(@query) 
+0

Какую ошибку? Я бы ожидал, что это будет + Convert (VarChar (8), @ formid), поскольку это int, но кроме этого я не вижу ничего плохого в том, что вы сделали. –

ответ

0

преобразовать его в строку,

CAST(@formid AS VARCHAR(25)) 
+0

конечно - спасибо – tintyethan

+0

приветствую ':)' –

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