저장 프로시저 사용

저장 프로시저는 관계형 데이터베이스 시스템에 액세스하는 응용 프로그램에서 사용할 수 있는 하위 루틴입니다. SAP Sybase ASE, Microsoft SQL Server 또는 Tableau의 Teradata 데이터베이스에 연결하는 경우 저장 프로시저를 사용하여 연결을 정의할 수 있습니다.

Oracle의 경우 테이블 함수를 사용하여 연결을 정의할 수 있습니다. Oracle 테이블 함수는 저장 프로시저와 유사하게 작동하며 데이터 원본 페이지에서 저장 프로시저 아래에 나열됩니다.

이러한 데이터 유형 중 하나를 사용하여 데이터 원본을 만드는 경우 사용할 수 있는 프로시저가 저장 프로시저에 나열됩니다(Microsoft SQL Server 예제 참조).

왼쪽 패널에서 프로시저를 캔버스로 끌거나 나열된 프로시저 중 하나를 두 번 클릭합니다. 프로시저에서 매개 변수를 사용할 수 있는 경우 매개 변수 대화 상자가 자동으로 표시됩니다. 

값을 입력하는 대신 기존 Tableau 매개 변수를 사용하거나 값에 대해 새 Tableau 매개 변수를 만듭니다.

그런 다음 뷰에 Tableau 매개 변수를 표시하면 사용자가 프로시저에서 매개 변수 값을 대화식으로 변경할 수 있습니다.

저장 프로시저 참고 사항

저장 프로시저를 사용하여 Tableau용 데이터 원본을 정의하는 경우에는 다음을 주의합니다.

  • 저장 프로시저에서 둘 이상의 결과 집합이 반환되는 경우 첫 번째 결과만 읽히고 나머지는 무시됩니다.

  • 저장 프로시저에 출력 매개 변수가 있는 경우 Tableau에서는 저장 프로시저가 필터링됩니다.

  • 비스칼라 유형의 매개 변수를 포함하는 저장 프로시저는 제외됩니다.

  • Tableau에서 일치하는 유형이 없는 결과 집합 열(예: varbinary, geometry 및 hierarchyid)이 로깅됩니다. 모든 결과 집합 열이 알 수 없는 데이터 유형으로 매핑되는 경우 Tableau에서 "

    "...결과 집합에 사용할 수 있는 열이 없습니다."라는 메시지를 표시합니다.

  • 결과 집합을 반환하지 않는 저장 프로시저가 데이터 원본 페이지에 나열되지만 선택 시 실패합니다.

  • 저장 프로시저에서 필요로 하는 매개 변수에 대한 값이 제공되지 않는 경우 오류가 발생합니다. Tableau에서는 매개 변수가 필요한지 여부를 미리 결정할 수 없습니다.

  • 저장 프로시저에 대해서는 트랜잭션 관리가 수행되지 않습니다. 즉 저장 프로시저 작성자는 저장 프로시저를 호출하기 전에 트랜잭션을 시작하거나 호출 후에 커밋하는 작업을 Tableau에 의존해서는 안 됩니다.

  • 저장 프로시저가 올바르게 작동하려면 열 이름이 고유해야 합니다. 두 개의 열에 같은 이름이 있거나 이름을 지정하지 않으면 다음과 같은 오류가 나타날 수 있습니다.

  • 저장 프로시저에 여러 쿼리가 있는 경우(예: 다른 테이블에서 값 읽기 또는 임시 조합 포함 등) 각 쿼리는 같은 열 집합을 같은 순서(같은 이름 및 데이터 유형)로 반환해야 합니다. 열 순서와 이름이 쿼리 결과와 일치하게 하려면 CAST(Username as VARCHAR(20))와 같이 CAST 를 명시적으로 사용하여 올바른 데이터 유형을 사용했는지 확인하고 명시적인 열 이름을 사용해야 합니다. 저장 프로시저에서 이러한 지침을 따르지 않는 경우 오류 메시지가 표시될 수 있습니다.

    "InsertData: 바인딩되지 않은 열 오류"

  • 여러 쿼리가 있는(예: 다른 테이블에서 값 읽기 또는 임시 조합 포함 등) 저장 프로시저에 오류가 발생한 경우 프로시저의 맨 위에 SET NOCOUNT ON을 추가해 보십시오. 이렇게 하면 Transact-SQL 문에 의해 영향 받는 행 개수를 표시하는 메시지가 쿼리 결과 집합의 일부로 반환되지 않습니다.

또한 다음 제약 조건이 특정 데이터베이스에 적용됩니다.

Teradata 데이터베이스에 대한 저장 프로시저 제약 조건

다음 제약 조건이 Teradata 데이터베이스의 저장 프로시저에 적용됩니다.

  • 모든 매개 변수에 대해 값이 제공되어야 합니다. 사용자가 하나 이상의 매개 변수에 대한 값을 제공하지 않는 경우 Tableau에서 저장 프로시저에 대해 제공된 값이 너무 작다는 Teradata 데이터베이스 오류를 표시합니다.

SQL Server 데이터베이스에 대한 저장 프로시저 제약 조건

다음 제약 조건이 SQL Server 데이터베이스의 저장 프로시저에 적용됩니다.

  • 저장 프로시저에 대한 결과 집합에 IMAGE 또는 TEXT 유형의 열이 포함되어 있는 경우 저장 프로시저가 "잘못된 구문" 오류 메시지와 함께 실패합니다.

  • 결과 집합의 총 너비(각 행의 바이트 수)가 8060을 초과하는 경우 저장 프로시저가 실패합니다. 이는 수천 개의 텍스트 문자를 포함하기 위한 매우 넓은 테이블(수백 개의 열) 또는 큰 텍스트 열을 포함하는 테이블에서 발생할 수 있습니다.

  • Tableau는 스키마 "sys"에서 저장 프로시저를 표시하지 않습니다. .

  • 사용자가 프로시저에서 필요로 하는 하나 이상의 매개 변수에 대한 값을 제공하지 않는 경우 Tableau에서 "프로시저에는 @x 매개 변수에 대한 값이 필요하지만 값이 제공되지 않았습니다."라는 SQL Server 데이터베이스 오류를 표시합니다.

  • 여러 쿼리가 포함된 저장 프로시저는 위의 저장 프로시저에 대한 참고 사항에 나열된 지침을 따라야 합니다.

  • Tableau Desktop은 Microsoft SQL Server TIME 데이터 유형을 지원하지 않습니다. 이 유형의 필드가 Microsoft SQL Server 데이터베이스의 저장 프로시저에 포함되어 있으면 Tableau Desktop에서 가져오지 않습니다.

SAP Sybase ASE 데이터베이스에 대한 저장 프로시저 제약 조건

다음 제약 조건이 SAP Sybase ASE 데이터베이스의 저장 프로시저에 적용됩니다(Windows만 해당).

  • 데이터베이스에 제대로 구성된 원격 서버가 있어야 합니다.

  • 사용자가 프로시저에서 필요로 하는 하나 이상의 매개 변수에 대한 값을 제공하지 않는 경우 Tableau에서 "프로시저에는 @x 매개 변수에 대한 값이 필요하지만 값이 제공되지 않았습니다."라는 Sybase ASE 데이터베이스 오류를 표시합니다.

의견을 주셔서 감사합니다! 피드백을 제출하는 동안 오류가 발생했습니다. 다시 시도하거나 메시지를 보내주십시오.