단일 값 및 다중값 매개 변수 사용
매개 변수는 단일 값 또는 다중값을 가질 수 있습니다. 다중값 매개 변수의 값은 둘 이상으로 설정할 수 있습니다. 다중값 매개 변수에 대한 사용 가능한 값 목록을 정의하면 Reporting Services는 자동으로 보고서 도구 모음 드롭다운 목록에 모두 선택 옵션을 제공합니다. 이 옵션을 사용하여 목록의 모든 값을 선택하거나 선택 취소할 수 있습니다.
디자인 화면의 입력란에는 단일 값이나 다중값 매개 변수는 @ 기호로 시작하는 간단한 식으로 표시됩니다. 예를 들어 Store라는 매개 변수는 [@Store]로 표시됩니다. 자세한 내용은 간단한 식 및 복잡한 식 이해(Reporting Services)를 참조하십시오.
매개 변수의 다중값 속성을 설정하려면 보고서 매개 변수 속성 대화 상자에서 다중값 허용 옵션을 선택합니다. Boolean을 제외한 모든 매개 변수 유형에 대해 다중값을 설정할 수 있습니다.
다중값 매개 변수의 주요 용도는 쿼리 제한 절(예: Transact-SQL WHERE 절 또는 MDX Filter 절)을 통해 단일 값 대신 값 집합 포함 여부를 테스트하는 것입니다. 다중값 매개 변수를 만들고 사용하는 방법은 자습서: 보고서에 매개 변수 추가 및 보고서 매개 변수 만들기 및 보고서 매개 변수 속성 설정을 참조하십시오.
보안 정보 |
---|
String 형식의 매개 변수가 포함된 보고서에서는 유효한 값 목록이라고도 하는 사용 가능한 값 목록을 사용해야 하며 보고서를 실행하는 모든 사용자가 보고서의 데이터를 보는 데 필요한 권한만 갖도록 해야 합니다. String 형식의 매개 변수를 정의할 경우 모든 값을 사용할 수 있는 입력란이 사용자에게 제공됩니다. 사용 가능한 값 목록은 입력할 수 있는 값을 제한합니다. 보고서 매개 변수가 쿼리 매개 변수에 연결되어 있고 사용 가능한 값 목록을 사용하지 않는 경우에는 보고서 사용자가 입력란에 SQL 구문을 입력할 수 있으므로 보고서와 서버가 SQL 삽입 공격을 받을 가능성이 있습니다. 사용자에게 새 SQL 문 실행을 위한 충분한 권한이 있으면 서버에 원하지 않은 결과가 발생할 수 있습니다. 보고서 매개 변수가 쿼리 매개 변수에 연결되어 있지 않고 매개 변수 값이 보고서에 포함된 경우에는 보고서 사용자가 식 구문 또는 URL을 매개 변수 값에 입력하고 보고서를 Excel 또는 HTML로 렌더링할 수 있습니다. 이후 다른 사용자가 보고서를 보면서 렌더링된 매개 변수 내용을 클릭할 경우 악의적인 스크립트나 링크가 의도하지 않게 실행될 수 있습니다. 악의적인 스크립트를 의도하지 않게 실행하는 위험을 줄이기 위해 신뢰할 수 있는 출처의 렌더링된 보고서만 여십시오. 보고서를 보호하는 방법은 보고서 및 리소스 보안을 참조하십시오. |
다중값 보고서 매개 변수를 위한 쿼리 작성
만드는 모든 보고서 매개 변수에 대해 다중값 매개 변수를 정의할 수 있습니다. 그러나 쿼리를 사용하여 데이터 원본에 여러 매개 변수 값을 다시 전달하려면 다음 요구 사항이 충족되어야 합니다.
데이터 원본이 SQL Server, Oracle, Analysis Services, SAP BI NetWeaver 또는 Hyperion Essbase여야 합니다.
데이터 원본이 저장 프로시저일 수 없습니다. Reporting Services에서는 다중값 매개 변수 배열을 저장 프로시저로 전달할 수 없습니다.
쿼리에서 IN 절을 사용하여 매개 변수를 지정해야 합니다.
다음 예에서는 Transact-SQL 문의 WHERE 절에서 IN 키워드를 사용하는 작업을 보여 줍니다. IN 키워드 또는 이 쿼리에서 반환하는 결과에 대한 자세한 내용은 IN(Transact-SQL)을 참조하십시오.
SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.Title IN (@Title)
보고서에서 이를 시험하려면 이 쿼리를 사용하여 데이터 집합을 정의하십시오. 자동으로 만들어진 보고서 매개 변수 Title에 대한 속성을 다음과 같이 변경하십시오.
다중값 옵션을 선택합니다.
사용 가능한 값에서 쿼리 사용 안 함 옵션을 선택합니다. 값 열에 다음 목록을 입력합니다(레이블 열은 비워 둠). Design Engineer, Buyer, Marketing Assistant
기본값에 Buyer를 입력합니다.
미리 보기를 실행합니다. Title의 값을 다르게 조합하고 예상된 결과가 얻어지는지 확인합니다.
[!참고]
보고서 서버는 매개 변수를 배열로 처리할 수 없는 데이터 원본에 대해 쿼리를 다시 작성합니다. 원하는 결과 생성을 위해서는 쿼리를 다시 작성해야 합니다. 매개 변수를 다중값으로 정의하고 쿼리에서 IN 문을 사용하여 매개 변수를 지정하는 경우 쿼리 다시 작성이 트리거됩니다. IN 문을 포함하지 않는 쿼리를 작성하는 경우 보고서 서버에서 다중값 매개 변수를 지원하기 위해 제공하는 논리를 방해하게 됩니다.
데이터 집합, 데이터 영역 및 그룹에 대한 필터 식은 해당 속성 대화 상자의 필터 페이지에서 정의됩니다. 다중값 매개 변수를 참조하는 필터 식을 정의했다면 필터 식에서 IN 연산자를 사용해야 합니다. IN 이외의 다른 연산자를 사용하는 필터 식은 처리 오류를 유발합니다. 자세한 내용은 방법: 필터 추가(Reporting Services)를 참조하십시오.
다중값 매개 변수를 참조하는 식 작성
식에서 매개 변수를 참조하는 경우 기본 제공 Parameters 컬렉션을 사용합니다. 식에서 다중값 매개 변수를 사용할 경우 단일 값 처리 방법과 전체 값 배열을 이해해야 합니다. 다음 표에서는 다중값을 허용하도록 설정된 매개 변수의 매개 변수 속성에 대한 예와 설명을 제공합니다.
예 |
설명 |
---|---|
Parameters!<ParameterName>.Value |
매개 변수에 대한 Variant 데이터 값의 배열입니다. |
Parameters!<ParameterName>.Label |
매개 변수의 레이블인 문자열의 배열입니다. |
Parameters!<ParameterName>.IsMultiValue |
매개 변수 다중값 허용 옵션의 선택 여부를 나타내는 부울 속성입니다. |
Parameters!<ParameterName>.Count |
배열의 값 수입니다. |
Parameters!<ParameterName>.Value(0) |
다중값 배열의 첫 번째 값입니다. |
Parameters!<ParameterName>.Label(0) |
다중값 배열의 첫 번째 레이블입니다. |
Parameters!<ParameterName>.Value(Parameters! <ParameterName>.Count-1) |
다중값 배열의 마지막 값입니다. |
Parameters!<ParameterName>.Label(Parameters! <ParameterName>.Count-1) |
다중값 배열의 마지막 레이블입니다. |
=Join(Parameters!<ParameterName>.Value,", ") |
String 형식의 다중값 매개 변수 배열에 들어 있는 모든 값을 한 개의 문자열로 연결하는 식입니다. |
=Split("Value1, Value2, Value3",",") |
문자열을 가져와서 다중값 매개 변수를 예상하는 포함된 보고서 또는 드릴스루 보고서에 전달하는 데 사용할 수 있는 개체 배열을 만듭니다. |
어떤 식에서든 SPLIT 및 JOIN 함수를 사용하여 배열에 있는 값을 분리 또는 결합할 수 있습니다. STRING 및 CINT 함수를 사용하여 값을 문자열 또는 정수로 변환할 수 있습니다.
식에 포함된 다중값 및 다중값 매개 변수에 대한 자세한 내용과 예는 식에서 매개 변수 컬렉션 참조 사용(Reporting Services)을 참조하십시오.