2013-07-02 2 views

답변

2
DECLARE @param AS INT = ?; 

IF @param = 1 
BEGIN 
    SELECT 1 AS Y; 
END 
ELSE IF @param = 2 
BEGIN 
    SELECT 2 AS Y; 
END 

두 가지 질문 쿼리에 표시 아마 당신은 단지 하나의 변수를 전달하고있다. 개발자가 동일한 값을 두 번 (또는 여러 번) 전달하는 코드를 보았습니다. 이것은 비효율적이다. 더 좋은 방법은 전달 된 매개 변수를 SSIS 변수로받는 것입니다. 장점 : 1. 한 값만 전달해야합니다. 2. 전달 된 매개 변수가 sql에서 사용되는 순서를 변경하는 경우 SQL 실행 태스크 편집기 // 매개 변수의 사용자 인터페이스에서 순서를 변경할 필요가 없습니다. 이것은 Andy Leonard가 나중에 그의 답변에서 제안한 것입니다.

0

하실 수 있습니다. SQL 실행 태스크를 언급한다고 가정하면 OLE DB 연결을 사용하는 SQL 실행 태스크의 매개 변수는 물음표 (?)를 매개 변수 자리 표시 자로 사용합니다. SQL 실행 태스크의 매개 변수 매핑 페이지에서 SSIS 변수에 자리 표시자를 매핑합니다. SQLStatement에서 속성에 입력합니다 : (? = 1) (? = 2)

을 을 시작하면 ... {여기에 몇 가지 T-SQL} ... 끝 는 경우 ... { 시작 여기에 일부 T-SQL} ... 끝

그건 내가 생각하는 것을 달성하는 한 가지 방법입니다.

또 다른 방법은 Execute SQL 작업을 만들어 데이터베이스에서 @parameter 값을 SSIS 변수로 읽는 것입니다. 그런 다음 SQLStatement 속성으로 T-SQL에 대한 각 옵션이있는 두 개의 SQL 실행 작업을 빌드하고 선행 제약 조건에 대한 식을 사용하여 실행할 SQL 실행 작업을 결정할 수 있습니다. 이 도움이

희망, : {>

+0

if (? = 1) begin ... {여기에서 일부 T-SQL} ... end If (? = 2) 시작 ... (일부 T-SQL은 여기에서) ... 끝 위의 SQL은 작동합니까 ?? "구문 분석 할 수 없음"오류가 발생합니다. 내게 올바른 구문을 써라. – user1810575

0

SQL 실행 작업을 사용하여 Transact-SQL 문을 실행할 수 없습니다.

달성하려는 목표에 따라 조건부 SQL 문을 설정하는 데 사용됩니다.

에서, 일반 탭에서 SQL 작업 편집기

  1. 을 실행 SQLStatement에서 비워 둡니다. 매개 변수 매핑 탭에서
  2. 는, 표현 탭에서 이름을 0
  3. 을 매개 변수 매개 변수와지도 사용자 : 매개 변수를 추가,

    에 SQLStatementSource

    설정 (DT_NUMERIC, 18, 0) @ [사용자 :: 매개 변수] == 1? ... 쿼리 1 ... ... ... 쿼리 2 ...

관련 문제