2010-04-08 25 views
5

Tôi gọi một chức năng lưu trữ như thế này:oracle sql nhà phát triển được cắt bỏ kết quả của tôi

select XML_INVOICE.GENERATE_XML_DOC('84200006823') from dual; 

Kết quả truy vấn sau đó hiển thị trong một bảng bên dưới, mà tôi có thể nhấp chuột phải và chọn "Export dữ liệu" - > XML

<?xml version='1.0' encoding='UTF8' ?> 
<RESULTS> 
    <ROW> 
    <COLUMN NAME="XML_INVOICE.GENERATE_XML_DOC('84200006823')" <![CDATA[<xml>yada yada</xml><morexml>...]]></COLUMN> 
    </ROW> 
</RESULTS> 

Vấn đề là "..." - Nhà phát triển SQL (2.1.0.63 trên Linux) không hiển thị tất cả dữ liệu - cắt bỏ kết quả và thêm dấu chấm lửng. Điều này là không sử dụng với tôi. Làm cách nào để tôi xuất dữ liệu TẤT CẢ dữ liệu của mình?

+0

Tôi xóa của tôi câu trả lời vì bạn đã xác nhận rằng tệp đã lưu chứa "...". Tôi không thể tái sản xuất với một cuộc gọi tương tự như một chức năng tích hợp tạo ra đầu ra dài. Chỉ cần chắc chắn - nếu bạn làm điều này trong SQL * Plus (với các tham số SET thích hợp) bạn cũng có được kết quả tương tự không? Ngoài ra, từ tên hàm và phương thức, có vẻ như kết quả đã có trong XML - tại sao bạn cần phải chuyển đổi nó một lần nữa? – dpbradley

+0

Mức độ đầy đủ của XML là bao nhiêu. Bạn có thể đăng nó ở đây (để chúng tôi có thể chèn vào một môi trường và xem liệu chúng tôi có thể tái tạo) –

+0

XML là 70kb hay không. Tôi không thể đăng XML vì dữ liệu khách hàng của nó. Trong mọi trường hợp, nội dung thực tế của XML không liên quan - chỉ thực tế là nó cắt ngắn. – nont

Trả lời

0

1) Chèn kết quả của SP vào một bảng

chọn XML_INVOICE.GENERATE_XML_DOC ('84200006823') vào schema.table từ kép;

(sẽ chỉ có một hàng)

Sử dụng exp để xuất khẩu bảng

tên EXP/mật khẩu @ BẢNG dụ = (tablename)

+0

Tôi muốn thử điều này, nhưng tôi không chắc chắn như thế nào. Tôi không cần phải tạo bảng đầu tiên? lược đồ bảng nên là gì? và ví dụ là gì? Dường như với tôi như thế này là trên máy chủ kết thúc, mà tôi không có quyền truy cập vào. Không phải là có một số cách đơn giản để có được kết quả của truy vấn này?Tôi cho rằng tôi có thể viết một chương trình toàn bộ để có được kết quả của một truy vấn và viết nó ra. * thở dài * Nhưng đó không phải là những gì nhà phát triển SQL là? – nont

0

Một giải pháp khác sẽ được để viết trực tiếp một tập tin XML thấy Ví dụ dưới đây, và điều chỉnh để phù hợp với:

CREATE OR REPLACE PROCEDURE output_xml_file 
(inFileName   Varchar2) --user defined prefix for file name   
AS 

      fp UTL_FILE.FILE_TYPE; 
       v_filename VARCHAR2(150); 
      v_XML_Result VARCHAR2(4000);  

BEGIN 

      v_filename:=infilename||'.xml'; 

      fp := UTL_FILE.FOPEN('c:\pathtofolder', v_filename, 'W', 4000); 

      select XML_INVOICE.GENERATE_XML_DOC(inFileName) into v_XML_Result from dual; 

      UTL_FILE.PUT_LINE(fp, v_XML_Result); 
      UTL_FILE.FCLOSE(fp); 

      EXCEPTION 

      WHEN OTHERS THEN 

       UTL_FILE.FCLOSE(fp); 
       raise; 
    END output_xml_file; 
    /
    SHOW ERRORS; 
    GRANT EXECUTE ON output_xml_file TO PUBLIC; 
+0

Tôi đánh giá cao phản hồi của bạn. Tuy nhiên, mã này tạo ra một tập tin trên máy chủ! Các DBAs không vui lòng với điều đó, và bên cạnh đó, chúng không cấp cho các nhà phát triển "chỉ" truy cập để đọc các tệp trên máy chủ oracle. Vì vậy, điều này không giúp tôi nhiều. – nont

-1

Run as một Script (F5) chứ không phải là báo cáo (Ctrl + En ter)

Kết quả sau đó sẽ được chuyển tới cửa sổ Output Script chứ không phải là đầu ra truy vấn, và bạn sẽ có thể Copy và Paste nó

+0

cảm ơn phản hồi của bạn. Tôi đoán không có gì làm tôi hài lòng với vấn đề này- Tôi đã chuyển sang một công việc mới vì điều này đã xảy ra, và chúng tôi thậm chí không sử dụng Oracle ở đây, vì vậy tôi không có cách nào để kiểm tra điều này! Nhưng bạn nhận được một upvote từ tôi bởi vì nó có vẻ hợp lý. – nont

+4

Điều này không hoạt động. Tôi có cùng một vấn đề với 'SELECT văn bản TỪ all_views WHERE view_name = 'xxx'' cho một chế độ xem phức tạp tôi phải đảo ngược kỹ sư. Đầu ra với F5 bị cắt ngắn hơn nữa. – SAJ14SAJ

5

Tôi đã có cùng một vấn đề trong SQL Developer 4. Đây là những gì đã làm việc cho tôi:

set long 100000; 
set longchunksize 100000; 

Và sau đó chạy lại truy vấn. Bây giờ bạn có thể xem toàn bộ ô trong chế độ xem lưới và xuất nó sang csv.

(Các OP không còn với công việc tương tự hoặc sử dụng Oracle, nhưng câu hỏi này là một trong những kết quả đầu tiên trong google, vì vậy hy vọng điều này sẽ giúp mọi người có cùng một vấn đề.)

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