In văn bản trong cửa sổ Trang tính SQL dành cho nhà phát triển SQL của Oracle


90

Tôi đang sử dụng Oracle SQL (trong SQLDeveloper, sử dụng Trang tính SQL). Tôi muốn in một tuyên bố trước lựa chọn của mình, chẳng hạn như

PRINT 'Querying Table1';
SELECT * from Table1;

Tôi sử dụng gì để In / hiển thị đầu ra văn bản? Nó không phải là Print, vì điều đó mang lại cho tôi lỗi: Bind Variable Table1KHÔNG ĐƯỢC KHAI BÁO. DBMS_OUTPUT.PUT_LINE là một lệnh không xác định. (Rõ ràng, tôi là một người dùng SQLDeveloper và Oracle thiếu kinh nghiệm. Phải có một số từ đồng nghĩa với Print, nhưng tôi đang gặp khó khăn khi tìm trợ giúp về nó mà không biết nó là gì.)

Câu trả lời:


143

nhập mô tả hình ảnh ở đây

cho các nhận xét đơn giản:

set serveroutput on format wrapped;
begin
    DBMS_OUTPUT.put_line('simple comment');
end;
/

-- do something

begin
    DBMS_OUTPUT.put_line('second simple comment');
end;
/

bạn sẽ nhận được:

anonymous block completed
simple comment

anonymous block completed
second simple comment

nếu bạn muốn in ra kết quả của các biến, đây là một ví dụ khác:

set serveroutput on format wrapped;
declare
a_comment VARCHAR2(200) :='first comment';
begin
    DBMS_OUTPUT.put_line(a_comment);
end;

/

-- do something


declare
a_comment VARCHAR2(200) :='comment';
begin
    DBMS_OUTPUT.put_line(a_comment || 2);
end;

đầu ra của bạn phải là:

anonymous block completed
first comment

anonymous block completed
comment2

1
Dòng đầu tiên đặt lưu lượng phục vụ trên định dạng được bọc; nên được đặt lưu lượng phục vụ trên định dạng WRAPPED;
geographika

Tôi không thể làm việc này. set serveroutput on format word_wrapped; begin dbms_output.put_line('hello world'); end; select * from dual Mang lại cho tôi: select * from dual; Error report: ORA-06550: line 7, column 1: PLS-00103: Encountered the symbol "SELECT" 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action
dwjohnston

9
Trong các phiên bản mới hơn của SQL Developer, trước tiên bạn phải mở cửa sổ Đầu ra DBMS bằng cách sử dụng thanh menu trên cùng: Xem> Đầu ra Dbms.
Bruno Ranschaert

có thể có nhưng ảnh chụp màn hình và không có văn bản, sẽ là +1 haha
David Mann

41
PROMPT text to print

Lưu ý: phải sử dụng Run as Script (F5) chứ không phải Run Statement (Ctl + Enter)


1
Điều này rất hữu ích. Cảm ơn!
sunlover3

Cũng hoạt động cho tôi với Run Statement (Ctl + Enter).
Pascal R.

21

Bạn có thể đặt tiếng vọng thành bật:

set echo on
REM Querying table
select * from dual;

Trong SQLDeveloper, nhấn F5 để chạy dưới dạng tập lệnh.


Tôi đã chấp nhận đây là một câu trả lời, nhưng tôi thấy một câu trả lời khác có nhiều điểm hơn, vì vậy tôi đã thay đổi chấp nhận của mình thành câu trả lời đó. Tuy nhiên, điều này đã làm việc với tôi, và đó là một câu trả lời tốt.
thursdaysgeek

13

Bạn có thể đặt văn bản của mình trong một câu lệnh chọn lọc, chẳng hạn như ...

SELECT 'Querying Table1' FROM dual;

8

Câu trả lời chính đã bỏ sót một bước cho các cài đặt mới, nơi người ta phải mở cửa sổ xuất dbms.

nhập mô tả hình ảnh ở đây

Sau đó, tập lệnh tôi đã sử dụng:

dbms_output.put_line('Start');

Một kịch bản khác:

set serveroutput on format wrapped;
begin
    DBMS_OUTPUT.put_line('jabberwocky');
end;

7

Đối với tôi, tôi chỉ có thể làm cho nó hoạt động với

set serveroutput on format word_wrapped;

Lệnh được bọc và được WRAPPED chỉ gây ra lỗi: Lệnh SQLPLUS không thành công - không đủ đối số


1

Nếu bạn không muốn tất cả các câu lệnh SQL của mình được lặp lại, nhưng bạn chỉ muốn xem các kết quả có thể nhận dạng dễ dàng của tập lệnh của mình, hãy làm theo cách này:

bật tiếng vọng

REM MyFirstTable

tắt tiếng vọng

xóa khỏi MyFirstTable;

bật tiếng vọng

REM MySecondTable

tắt tiếng vọng

xóa khỏi MySecondTable;

Kết quả từ ví dụ trên sẽ giống như sau:

-REM MyFirstTable

Đã xóa 13 hàng.

-REM MySecondTable

27 hàng đã bị xóa.


0

Nếu tôi bỏ qua bắt đầu - kết thúc thì đó là lỗi. Vì vậy, đối với tôi, điều này đang hoạt động (không cần gì khác):

set serveroutput on;
begin
DBMS_OUTPUT.PUT_LINE('testing');
end;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.