2012-05-02 30 views
5

Tôi cố gắng để thực hiện một truy vấn đối với oracle với mệnh đề where bao gồm0x80040e51 Mô tả: "Nhà cung cấp không thể lấy được thông tin tham số và SetParameterInfo chưa được gọi."

BETWEEN date AND date2 

Vòng đầu tiên của nghiên cứu cho thấy rằng các nhà cung cấp oracle OLEDB không cho phép truy vấn tham số, và những nên được đặt trong các biến. Vì vậy, tôi đã tạo 3 biến. 2 tổ chức ngày của tôi được dân cư một cách chính xác, và một để giữ truy vấn với biểu thức kết thúc vào:

BETWEEN to_date('" + (DT_WSTR, 30)@[User::lastRun] + "','DD/MM/YYYY HH:MI:SS AM') AND to_date('" + (DT_WSTR, 30) @[User::thisRun] + "','DD/MM/YYYY HH:MI:SS AM')" 

Khi tôi bấm vào nút "Đánh giá Expression" trong xây dựng biểu thức, nó đánh giá một cách chính xác để

BETWEEN to_date('1/1/1900','DD/MM/YYYY HH:MI:SS AM') AND 
to_date('1/1/2010','DD/MM/YYYY HH:MI:SS AM') 

Và tôi có thể chạy điều này đối với thành công bằng cách sử dụng các công cụ khác.

Nhưng khi tôi cố gắng chạy gói, tôi nhận được:

[mySource 1 ] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E51. An OLE DB record is available. Source: "OraOLEDB" Hresult: 0x80040E51 Description: "Provider cannot derive parameter information and SetParameterInfo has not been called.".

đâu mySource là OLE DB Nguồn. Nó có AccessMode được đặt thành "SQL Command From Variable" và SQLCommandVariable được đặt thành biến truy vấn của tôi.

Tôi cũng đã cố gắng tự thiết lập tất cả các cột bên ngoài Output, và thay đổi một số giá trị tôi đã chọn trong truy vấn để ném cái datatype oracle NGÀY:

to_char(PT.CREATED_DTTM,'DD/MM/YYYY HH:MI:SS AM') 

tôi vẫn còn khá mới SSIS, vì vậy tôi thậm chí không chắc chắn tôi đang tìm kiếm ở vị trí chính xác cho thư mục gốc của lỗi này. Bất cứ ai có ý tưởng đi đâu từ đây?

Ảnh chụp màn hình theo yêu cầu. Như bạn có thể thấy truy vấn "từ biến" hoạt động như mong đợi ở chế độ xem trước, nhưng khi tôi cố gắng thực hiện nó, tôi nhận được lỗi.

Control Flow Data Source Debug error

+0

Có, 2 trường hợp đầu tiên được điền bằng cách thực thi tác vụ SQL. Khi tôi hiển thị biến đánh giá đúng (nhưng với giá trị mặc định của hai biến ngày đầu tiên) "Khi tôi nhấp vào 'Đánh giá Biểu thức' trong trình tạo biểu thức, nó sẽ đánh giá chính xác thành" – slipsec

+0

Tôi sẽ thêm ảnh chụp màn hình vào ngày mai khi tôi quay lại trước của máy tính đó. Bây giờ, tôi có thể nói rằng bản xem trước cho thấy rằng truy vấn thực hiện đúng - vấn đề có liên quan đến việc thêm nó vào nguồn OLEDB. – slipsec

+0

Đã thêm ảnh chụp màn hình theo yêu cầu. Tôi chỉ lập bản đồ một Cột đầu ra cho đến khi nó hoạt động. – slipsec

Trả lời

1

tôi đã kết thúc thiết lập này trong "biểu" trên Dataflow, và NOT vào nguồn OLD DB, đảm bảo biến vẫn có "EvaluateAsExpression" = True.

Bạn cũng có thể thấy rằng tôi đã cập nhật từ OLE DB để sử dụng Attunity Oracle connector.

DataFlowSource

+0

Xin chào, nếu bạn đang đặt biểu thức cho [Nguồn Oracle]. [SqlCommand] tại Lưu lượng dữ liệu, thì phải đặt gì trong "Nguồn Oracle" bên trong tác vụ Lưu lượng dữ liệu? Làm thế nào để tôi nhận được các cột đầu ra và thực hiện các phép biến đổi? –

Các vấn đề liên quan