2017-02-09 2 views
0

모눈 결과를 반환하는 저장 프로 시저가 있습니다. 표시된대로 @idCC 매개 변수를 SQL 쿼리로 전송할 때 근본적인 문제가 있습니다. 숫자 값에서 매개 변수와 하드 코드를 제거하면 SQL이 작동하는 것을 알 수 있습니다. 쿼리가 표시된 쿼리에 @idCC을 읽도록 허용하려면 어떻게합니까?SQL Server 저장 프로 시저 - 매개 변수

저장 프로 시저 [dbo].[sp_CC_ContactGroupList]에서
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

을 보여줍니다 교체 ? – Alfabravo

+0

대체 어디에 WHERE dbo.CC_Contacts.idCC = '' '+ @ idcc +' '' WHERE dbo.CC_Contacts.idCC = + @idCC 대체 –

+0

행은 다음과 같습니다 : | idcc | GroupName1 | GroupName2 | GroupName3 | | 25 | Null | X | Null | X | – PigsIncorporated

답변

1

지금

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

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

는 당신이`를 PRINT` 경우 쿼리 문자열이 표시되는 방법 당신에게 @idCC

+0

완벽하게 작동합니다. 고맙습니다. – PigsIncorporated

관련 문제