2014-10-16 7 views
0

SQL 실행 태스크에서 OLE DB 연결을 사용하고 있습니다. 필자는 SQL 태스크의 "매개 변수 매핑"섹션에서 필요한 숫자 매개 변수를 매핑했습니다. 그럼 내가하고 싶은 것은 함께 추가하는 것입니다. 숫자 형으로 설정 했더라도 문자열로 처리됩니다.SSIS - SQL 실행 태스크에 숫자 매개 변수 전달

예를 들어, 3 개의 매개 변수를 1, 1 및 0 값으로 매핑하면 (? +? +?를 사용하여). 내가 그들을 추가하려고하면 나는 2 대신에 110을 얻는다. 그리고 나서 캐스팅 (? as integer) + cast (? as integer) + cast (? as integer)를 사용하여 정수로 캐스팅하면 원하는 결과를 얻는다. 그리고 대답은 2입니다.

그래서 내 질문에 매개 변수 매핑에서 Numeric으로 가정했을 때 문자열 형식으로 처리되는 이유는 무엇입니까?

enter image description here

덕분에, 댄

+0

참고로 스크린 샷에 varchar 유형을 추가하려고하지 않습니다. – ScubaManDan

+1

'numeric'을 사용한 적이 한번도 없었고'int32' 또는'long'을 사용했습니다. – Andrew

+0

int32 유형이 없습니다. 여기에 사용할 수 무엇의 목록입니다 : 짧은 널 , 긴, ​​ 플로트, 더블, 통화, VARIANT_BOOL, 진수, Signedchar, 바이트, USHORT, ULONG, LARGE_INTEGER, ULARGE_INTEGER, FILETIME, GUID를 VARCHAR, NVARCHAR, 숫자, 는 DBDate, 된 dbtime, DBTimestamp, DB_Varnumeric. – ScubaManDan

답변

0

나는 당신이 스크립트 작업을 만든 다음 SQL 쿼리 작업에 혼자 사용할 수있는 새로운 매개 변수에 매개 변수를 요약하는 것이 suggust 것이다. 또는 매개 변수를 추가하지 않고 모든 매개 변수를 쿼리에 전달하고 합계 자체를 수행하도록 쿼리를 변경하십시오.

SQL 쿼리 작업의 작은 스크립팅 창/창에 thim을 추가하고 있습니까? 이 창은 매우 제한적이며 오류 검사가 어렵습니다. 이것을 SQL 질의 (바람직하게는 EXEC dbo.MyProcedure ?,?,? 이상)로 제한하고 계산 작업을 스크립트 태스크 또는 SQL 프로 시저/스크립트로 분리하여 유지하는 것이 훨씬 더 바람직합니다.

+0

예,이 고양이를 다칠 수있는 여러 가지 방법이있는 것 같습니다. 나는 그것이 작동하도록했습니다. 그러나 저는 정말로 궁금해서 매개 변수가 숫자로되어있을 때 문자열 값으로 처리되는 이유를 알고 싶습니다. 예 : 그것은 버그일까요, 아니면 OLE DB가 작동하는 기능일까요? – ScubaManDan

+0

언급 한 결과를 제공하는 태스크의 SQLStatement는 무엇입니까? –

+0

나는이 변수와 같이 간단하게 할당 할 것이다. [set @myVar =? +? +];] 결과는 2 대신 110이됩니다. – ScubaManDan