2011-12-22 51 views
10

thể trùng lặp:
Best way/tool to get the results from an oracle package procedure
Oracle SQL Developer: Show REFCURSOR Results in Grid?Làm cách nào để xem kết quả/đầu ra refcursor trong Oracle SQL Developer?

Tôi mới vào Oracle SQL Developer. Tôi đang sử dụng Oracle SQL Developer phiên bản 3.0. Tôi đã cố gắng kiểm tra SP của mình bằng truy vấn sau.

DECLARE 
    type output_cursor is ref cursor; 
    P_CURSOR output_cursor; 
BEGIN 
    P_CURSOR := NULL; 
    myPackage.mySPTest ( P_NOTIFICATION_ID => 1975357,P_CURSOR => P_CURSOR) ; 
END; 

Khi tôi chạy truy vấn trên trong Nhà phát triển SQL Oracle của tôi, tôi nhận được thông báo 'khối ẩn danh hoàn thành' và không hiển thị bất kỳ kết quả nào.

Bất kỳ ai cũng có thể giúp tôi, cách xem kết quả.

.

+0

đầu ra nào bạn mong đợi? nơi nào các 'kết quả' của sp đi của bạn? bạn có thể muốn viết một câu lệnh SELECT chống lại điều đó ... – Randy

+0

Mong đợi một tập kết quả của hàng và cột. Kết quả SP sẽ tham gia chương trình .NET progam. Làm thế nào để tôi viết một lựa chọn chống lại con trỏ ... một số mẫu sẽ được tốt đẹp .. –

+0

Sử dụng Toad thay vào đó, nó sẽ hiển thị nội dung của một refcursor cho bạn. –

Trả lời

-2

Để xem kết quả của con trỏ, bạn cần lặp qua con trỏ và các giá trị in. Bạn cần phải biết tên cột cho những gì con trỏ của bạn đang quay trở lại. Bạn có thể làm một cái gì đó như:

DECLARE 
    type output_cursor is ref cursor; 
    P_CURSOR output_cursor; 
BEGIN 
    P_CURSOR := NULL; 
    DOCTORS_APP.get_reminders ( P_NOTIFICATION_ID => 1975357,P_CURSOR => P_CURSOR) ; 
    //replace Column1 and Column2 with actual column names 
    FOR CUR_VAL in P_CURSOR LOOP 
     DBMS_OUTPUT.PUT_LINE(CUR_VAL.Column1||' '||CUR_VAL.Column2); 
    END LOOP; 
END; 
+1

Tôi đã thử mẫu, lỗi đưa ra. –

+0

lỗi gì? Bạn đã thay thế Column1 và Column2 bằng tên cột thực tế chưa? –

+1

lỗi Lỗi bắt đầu từ dòng 1 trong lệnh: Lỗi báo cáo: ORA-06.550: dòng 11, cột 10: PLS-00.221: 'P_CURSOR' không phải là một thủ tục hay là undefined ORA-06.550: dòng 11 , cột 1: PL/SQL: Tuyên bố bị bỏ qua 06550. 00000 - "dòng% s, cột% s: \ n% s" * Nguyên nhân: Thường là lỗi biên dịch PL/SQL. * Hành động: –

21

Bạn có thể sử dụng một biến ràng buộc khai báo trong SQL Developer để giữ và hiển thị kết quả:

var r refcursor; 
exec myPackage.mySPTest(P_NOTIFICATION_ID => 1975357, P_CURSOR => :r); 
print r; 

exec là viết tắt cho một khối ẩn danh vì vậy đây là tương đương với:

var r refcursor; 
begin 
    myPackage.mySPTest(P_NOTIFICATION_ID => 1975357, P_CURSOR => :r); 
end; 
/
print r; 

Trừ P_CURSOR được khai báo là một cái gì đó vô ích, có lẽ ...

+0

Ah, tôi đã không nhận thấy @sathya đã đặt hai liên kết trong nhận xét của mình về câu hỏi; điểm thứ hai (và liên kết ở điểm đầu tiên) trỏ tới Tony Andrews cũng làm như vậy. Tôi đã đi từ một [câu trả lời cũ] (http://stackoverflow.com/questions/3526798/best-way-tool-to-get-the-results-from-an-oracle-package-procedure/3527037#3527037) của riêng tôi mặc dù. –

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