2017-02-09 12 views
0

グリッド結果を返すストアドプロシージャがあります。私は、図のように@idCCパラメータをSQLクエリに転送する際にいくつかの根本的な問題があります。私は数値と数値のハードコードを削除するとSQLが動作することを知っています。表示されたクエリにクエリが@idCCと表示されるようにするにはどうすればよいですか?あなたのストアドプロシージャ[dbo].[sp_CC_ContactGroupList]SQL Serverストアドプロシージャ - パラメータ

SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 

    ALTER PROCEDURE [dbo].[sp_CC_ContactGroupList] 
     (@idCC int) 
    AS 
    BEGIN 
     DECLARE @ListOfGroups VARCHAR(MAX) = 
       (STUFF((SELECT DISTINCT ',' + QUOTENAME(GroupName) 
         FROM dbo.CC_Groups 
         WHERE IsContactGroup = '1' 
         FOR XML PATH('')), 1, 1, '')); 

     DECLARE @sql VARCHAR(MAX) = ('SELECT * 
             FROM 
              (SELECT  
               dbo.CC_Contacts.idCC, 
               dbo.CC_Groups.GroupName AS gName, 
               ''X'' AS IsInGroup 
              FROM   
               dbo.CC_ContactGroups 
              INNER JOIN 
               dbo.CC_Groups ON dbo.CC_ContactGroups.idGroup = dbo.CC_Groups.idGroup 
              INNER JOIN 
               dbo.CC_Contacts ON dbo.CC_ContactGroups.idCC = dbo.CC_Contacts.idCC 
              WHERE 
               dbo.CC_Contacts.idCC = '''[email protected]+''') AS x 
              PIVOT (MAX(IsInGroup) 
               FOR gName IN(' + @ListOfGroups + ')) as p'); 

    EXEC(@sql); 
END 
+1

が表示されます

dbo.CC_Contacts.idCC = '''+cast(@idCC as varchar)+''' 

dbo.CC_Contacts.idCC = '''[email protected]+''' 

を置き換えます? – Alfabravo

+0

は、どこにdbo.CC_Contacts.idCC = '' '+ @ idCC +' '' WHERE dbo.CC_Contacts.idCC = + @idCC –

+0

のように置き換えられます:| idcc | GroupName1 | GroupName2 | GroupName3 | | 25 | Null | X | Null | X | – PigsIncorporated

答えて

1

、今それはあなたが `それをPRINT`場合は、クエリ文字列が表示され、どのように@idCC

+0

完全に動作します。ありがとうございました。 – PigsIncorporated

関連する問題