đặc biệt là loại không có 256 ký tự/dòng tối đa và giới hạn tối đa bộ đệm/bộ đệm 1000000.Oracle: bất kỳ sự thay thế nào cho gói DBMS_OUTPUT?
Trả lời
Có lẽ một trong những tùy chọn sẽ phù hợp với nhu cầu của bạn (tùy thuộc việc bạn viết một cái gì đó về phía máy chủ hoặc phía khách hàng):
- UTL_FILE
- TEXT_IO
- AskTom post
(cập nhật Mark Harrison) Tôi đã đi với gói đầu ra của tôi-dbms trong bài AskTom. Một tính năng thực sự thú vị là bạn có thể truy cập vào các kết quả thông qua một khung nhìn để dễ dàng hiển thị đầu ra trong một chương trình máy khách. Tôi đổi tên thành tên ngắn hơn.
Bạn có thể sử dụng gói TCP để ghi đầu ra vào thiết bị đầu cuối hoặc bộ ghi dữ liệu từ xa. Hoàn toàn bàn giao để gỡ lỗi mã gói đang chạy trong các tác vụ đã lên lịch.
Edit: Đây là một thủ tục dụ:
procedure pDebug(str in varchar2)
-- output debugging message to display or tcp console
is
x number;
l number;
nPort number;
sAddress varchar2(5000);
begin
if c_bDebug = 1 then
if c_tcpbDebug = 1 then
if cSocket.remote_host is NULL then
nPort := strMetaDataValue('TCP-DEBUG-PORT');
sAddress := strMetaDataValue('TCP-DEBUG-ADDRESS');
dbms_output.put_line('tcp:port ' || nPort);
dbms_output.put_line('tcp:address ' || sAddress);
if length(sAddress) > 1 and nvl(nPort, 0) > 0 then
begin
dbms_output.put_line('tcp:open start ' ||to_char(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
cSocket := utl_tcp.open_connection(sAddress, nPort); -- open connection
dbms_output.put_line('tcp:open ' || to_char(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
c_tcpbDebug := 1;
exception
when others then
dbms_output.put_line(SQLERRM);
dbms_output.put_line('Cant open debug tcp session ' || SYSTIMESTAMp);
c_tcpbDebug := 0;
end;
else
c_tcpbDebug := 0;
end if;
end if;
if cSocket.remote_host is not NULL then
dbms_output.put_line('tcp:write');
x := utl_tcp.write_line(cSocket, to_char(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || ' ' || str);
x := utl_tcp.write_line(cSocket, utl_tcp.crlf);
end if;
end if;
-- this bit prints out the debug statement in 254 char bits
l := length(str);
x := 1;
while x <= l loop
dbms_output.put_line(substr(str,x,254));
x := x + 254;
end loop;
end if;
end pDebug;
Phiên bản nào của Oracle? Cả hai giới hạn này đã được thư giãn trong các phiên bản gần đây. 10.2 hỗ trợ các dòng dài hơn 255 ký tự (giới hạn mới là 32k) và loại bỏ giới hạn kích thước bộ đệm tối đa. Oracle 9.2 có 255 ký tự trên mỗi dòng/1 MB tổng giới hạn, nhưng Oracle đã không hỗ trợ phiên bản đó.
Một tùy chọn khác, mặc dù có thể không phải là lựa chọn tuyệt vời, là viết vào nhật ký cảnh báo.
sys.dbms_system.ksdwrt(2,to_char(sysdate)|| ' -- The message ');
INSERT là giải pháp thay thế tuyệt vời. Bạn không chỉ nhận được thông tin trong quá trình của bạn, nó còn tồn tại để tham khảo hoặc phân tích trong tương lai. Và kết quả có thể được lấy ra và lọc và xử lý bằng một ngôn ngữ rất phổ biến được gọi là SQL. Bạn có thể có một cột với một mặc định của sysdate để kiểm tra thời gian và thứ tự. Nó có thể được đặt bên trong một giao dịch tự trị để tránh mất việc đăng nhập do một sự quay trở lại.
Một hạn chế của dbms_output là đầu ra chỉ khả dụng sau khi câu lệnh kết thúc. Để theo dõi các quy trình chạy dài, tôi sử dụng dbms_pipe để gửi các thông báo trạng thái. Ở đầu bên kia của đường ống, bạn có thể xem quá trình này là gì.
- 1. Bất kỳ sự thay thế nào cho Bugsense cho ACRA
- 2. Oracle có bất kỳ hàm băm tích hợp nào không?
- 3. Có bất kỳ lựa chọn thay thế thực sự nào cho reStructuredText cho tài liệu Python không?
- 4. Thay thế ld bằng vàng - bất kỳ trải nghiệm nào?
- 5. Có bất kỳ sự thay thế nào dài gấp đôi trong java không?
- 6. Có bất kỳ sự thay thế WinDBG nào với GUI tốt hơn không?
- 7. mb_str_replace() ... chậm. bất kỳ lựa chọn thay thế nào?
- 8. Có bất kỳ giải pháp thay thế nào cho OData không?
- 9. NuGet không hiển thị bất kỳ gói nào
- 10. Có bất kỳ thay thế thực sự nào cho GeoServer là trình tạo bản đồ động trong Java không?
- 11. Có bất kỳ lựa chọn thay thế nào cho Rational Team Concert vào lúc này không?
- 12. bất kỳ công cụ tốt nào cho thế hệ makefile?
- 13. Bất kỳ phương án thay thế an toàn nào cho JSP templating
- 14. Có bất kỳ lựa chọn thay thế tốt nào cho WebSVN không?
- 15. Có bất kỳ lựa chọn thay thế miễn phí nào cho VisualSVN không?
- 16. Có bất kỳ trình chỉnh sửa thay thế nào cho tệp .m không?
- 17. Bất kỳ phương án thay thế nào cho IsSubclassOf hoặc IsAssignableFrom trong C# Metro-style
- 18. Bất kỳ lựa chọn thay thế nào cho plugin JQuery Hilight?
- 19. Bất kỳ lựa chọn thay thế nào cho .Net 4 Code Hợp đồng phân tích tĩnh?
- 20. Tìm kiếm khung công tác Flipbook. Bất kỳ lựa chọn thay thế nào cho Turn.js?
- 21. Bất kỳ giải pháp thay thế mã nguồn mở nào cho Dreamweaver sử dụng WebDav?
- 22. Bất kỳ lựa chọn thay thế PHP hoặc Python nào cho Liferay và Alfresco?
- 23. thay thế cho listagg trong Oracle?
- 24. có bất kỳ lựa chọn thay thế XDebug nào để gỡ lỗi PHP không?
- 25. Oracle thay thế cho MySQL REPLACE VÀO
- 26. Chuẩn SQL thay thế cho Oracle DECODE
- 27. Có bất kỳ sự khác biệt nào giữa Java và Java của Oracle được sử dụng trong Android không?
- 28. Bất kỳ sự bất lợi về hiệu suất của GC.disable?
- 29. Có sự thay thế nào cho sự kiện OnChange được nâng lên trên bất kỳ hành động nào trong Delphi không?
- 30. Bất kỳ gói loại twitteR nào cho Facebook trong Lập trình R?
thú vị, bạn có ví dụ về việc này không? cảm ơn! –