2011-04-14 5 views
0

난 ODP.NET (버전 2.111.7.0) 및 C# OracleCommand를 & OracleParameter 개체 및 OracleCommand.ExecuteNonQuery 방법을 사용하고삽입 블롭

수있는 방법이 있다면 궁금 큰 바이트 배열을 DB 링크를 통해 다른 데이터베이스에있는 oracle 테이블에 삽입하십시오. DB 링크를 통한 LOB 핸들링은 일반적으로 문제가 있다는 것을 알고 있지만 코드를 수정하고 다른 연결을 추가하는 것을 주저합니다.

는 blob을 매개 변수로 사용하고 dblink를 통해 내부적으로 이야기하는 저장 프로 시저를 만들어 어떤 차이를 만들지 않습니까? 그렇게 생각하지 않습니다 ..

내 현재 상황은 오라클이 날 "ORA-22992 : 원격 테이블에서 선택 LOB로 I 이터 사용할 수 없습니다"줄 것입니다 내가 OracleCommand를 함께 전달하는 매개 변수의 길이가 0 바이트 배열 될 때마다, 또는 길이가 32KB를 넘는 경우 (20KB가 작동했기 때문에 35KB가 아닌 것 같음)

이 매개 변수에 OracleDbType.Blob를 사용하고 있습니다.

감사합니다.

어떤 아이디어가 있습니까?

답변

0

두 번째 연결을 사용하여 두 트랜잭션을 동기화하여 커밋과 롤백이 항상 공동으로 수행되도록했습니다. 또한 실제로 BLOB를 dblink로 처리하는 일반적인 문제가 있다는 결론을 내 렸습니다. 제 경우에는 제 응용 프로그램의 디자인이 약간 중단되었지만 두 번째 연결과 두 번째 연결을 모두 도입해야했지만 두 번째 연결이 더 나은 선택이었습니다. 트랜잭션. 다른 옵션은 PL/SQL 블록과 DBMS_LOB.WRITEAPPEND의 일부 형식을 사용하여 32KB 덩어리로 BLOB를 삽입하는 것이 었습니다. 그러나이 경우에는 (필자의 경우) 내 코드에서 더 깊은 변경이 필요할 것입니다. 보다 직접적인 첫 번째 솔루션.

관련 문제