2013-05-29 36 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

不客氣':)' –