를 해결하는 방법에 SQL 쿼리를 매개 변수를 매핑하는 동안 문제를 사용하여 Oracle OLE DB?

StackOverflow https://stackoverflow.com/questions/58540

  •  09-06-2019
  •  | 
  •  

문제

를 입력 할 때 SQL 쿼리와 매개 변수를 사용하여 Oracle OLE DB 공급자면 다음과 같은 오류가:

매개 변수를 추출할 수 없에서 SQL command.공급자 도움이되지 않을 수도 있습니다 분석 매개 변수에 정보.이 경우에는 사용"SQL command 에서 변수"액세스 모드에서는 전체 SQL 명령은 변수에 저장됩니다.
추가 정보:
공급자할 수 없 매개 변수 정보를 파생 및 SetParameterInfo 되지 않 라고 합니다.(Microsoft OLE DB 공급자에 대한 오라클)

가 다음과 같은 제안에 여기는 하지만 무엇인지 이해가 필요합니다.쿼리에 대하여 Oracle

어떤 아이디어가?

도움이 되었습니까?

해결책

을 확장하에서의 링크에 주어진 질문:

  1. 패키지를 만들 변수
  2. 더블 클릭 패키지 변수 이름입니다.(이에 액세스 할 수 있습의 속성을 변수)
  3. 속성을 설정'EvaluateAsExpression'true
  4. 입력에서 쿼리를 표현 builder.
  5. 설정 OLE DB 소스에 SQL 쿼리에서 명령을 변수

식 작성기를 동적으로 만들 수 있 표현을 사용하여 변수를 만들기'parametised 쿼리'.
그래서 다음과 같이'보통'검색어:

select * from book where book.BOOK_ID = ?

로 작성할 수 있습 식로 작성기:

"select * from book where book.BOOK_ID = " + @[User::BookID]

당신은 할 수 있습니 null 취급과 데이터를 사용하여 변환 식 builder.

다른 팁

을 사용할 경우 데이터 흐름을 작업하고 사용 OLE DB 원본,그리고 당신은 필요한 매개 변수화 쿼리:

  1. 을 만들 변수를 저장하"전체"질의문의:에서 오른쪽 클릭하여 빈 영역 밖에서 패키지를 클릭 Variables:

Variables

추가를 클릭하여 변수를 변수의 창:

enter image description here

들에게 이름 SQL_DTFLOW_FULL 나 뭔가를 이해할 수 있을 쉽습니다.이 variable data typeSTRING

  1. 을 만들 변수(s)매개 변수를 저장합(s).

i.전자 전체의 쿼리 stamements 입니다:

SELECT * FROM BOOK WHERE BOOK_ID = @BookID --@BookID is SQL Parameter

샘플 위에 나는 단지 하나의 매개변수:@BookID,그래서 내가 만들어야 할 하나의 변수를 저장하는 내 매개 변수입니다.더 추가 변수에 따라 쿼리를 처리합니다.

ParamAdd

그것을 이름 SQL_DTFLOW_BOOKID

variable data typeSTRING

그래서,당신은 필요하 SSIS 깔끔한,그리고 변수를 정에서 이해할 수 있는 부분입니다.

를 만들려고 변수 이름 SQL_{TASK NAME}_{VariableName}

  1. 게 표현한 SQL_DTFLOW_FULL 변수,클릭 수 1,을 시작 번호를 기입 2.귀하의 SQL 정확한 SQL 문을 사용하여 문자열을 차단합니다.문자열을 차단 일반적으로 사용하는"더블 견적에서"시작과 끝입니다.Concat 변수 문자열로 차단합니다.

Expression

평가를 클릭하여 표현하여 보여주는 결과를 확인하기 위하여,쿼리에는 정정,복사하여 붙여넣기 질의 결과에 SSMS.

는지 확인하여 자신을 변수를 무료로부터 SQL Injection 를 사용하여 당신의 자신의 논리가 있습니다.(사용자 본능)

  1. 오픈 데이터 흐름 작업을 열고,OLE DB 원본을 편집하여 더블 클릭하는 항목입니다.

Data Flow

  • 선택하는 데이터 액세스 모드: SQL Command From Variable
  • 선택하는 변수 이름: SQL_DTFLOW_FULL
  • 미리보기를 클릭하면 제대로 작동하는지 확인합니다.

는 모든이며,내 방법으로 이를 방지하기 위해 SSIS 가 실패하는 경우.때문에 나가 사용하는 이 방법은 적이 있어 문제를 알고,SSIS 뭔가 이상이다.

을 변경 변수 값을 설정하기 전에 데이터 흐름 작업,SQL 결과 SQL_DTFLOW_FULL 변수 변경 변경 변수 값입니다.

나의 케이스에서 문제가 없었 의견에 sql 정상적인 형태의/**/그리고 나는 또한 열 별칭으로"란 이름은"대신에[Column Name].

면 나는 그들을 제거 작동합니다.

도를 매개 변수는?문서는 절까지 합류했는 부분의 문제다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top