พิมพ์ข้อความในหน้าต่าง Oracle SQL Developer SQL Worksheet


91

ฉันใช้ Oracle SQL (ใน SQLDeveloper โดยใช้ SQL Worksheet) ฉันต้องการพิมพ์คำสั่งก่อนที่ฉันจะเลือกเช่น

PRINT 'Querying Table1';
SELECT * from Table1;

ฉันใช้อะไรเพื่อพิมพ์ / แสดงเอาต์พุตข้อความ ไม่ใช่พิมพ์เพราะนั่นทำให้ฉันมีข้อผิดพลาด: Bind Variable Table1ไม่ได้ประกาศ DBMS_OUTPUT.PUT_LINE เป็นคำสั่งที่ไม่รู้จัก (เห็นได้ชัดว่าฉันเป็นผู้ใช้ SQLDeveloper และ Oracle ที่ไม่มีประสบการณ์ต้องมีคำพ้องความหมายสำหรับ Print แต่ฉันมีปัญหาในการค้นหาความช่วยเหลือโดยไม่รู้ว่ามันคืออะไร)

คำตอบ:


143

ป้อนคำอธิบายภาพที่นี่

สำหรับความคิดเห็นง่ายๆ:

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

-- do something

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

คุณควรได้รับ:

anonymous block completed
simple comment

anonymous block completed
second simple comment

หากคุณต้องการพิมพ์ผลลัพธ์ของตัวแปรนี่คืออีกตัวอย่างหนึ่ง:

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;

ผลลัพธ์ของคุณควรเป็น:

anonymous block completed
first comment

anonymous block completed
comment2

1
บรรทัดแรกตั้งค่าเซิร์ฟเวอร์เอาท์พุทในรูปแบบที่ห่อ; ควรตั้งค่า serveroutput ในรูปแบบ WRAPPED;
geographika

ฉันไม่สามารถทำงานนี้ได้ set serveroutput on format word_wrapped; begin dbms_output.put_line('hello world'); end; select * from dual ให้ฉัน: 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
ในเวอร์ชันที่ใหม่กว่าของ SQL Developer คุณต้องเปิดหน้าต่างเอาต์พุต DBMS ก่อนโดยใช้แถบเมนูด้านบน: View> Dbms Output
Bruno Ranschaert

ทำได้ แต่ภาพหน้าจอและไม่มีข้อความน่าจะเป็น +1 ฮ่า ๆ
David Mann

42
PROMPT text to print

หมายเหตุ:ต้องใช้ Run as Script (F5) ไม่ใช่ Run Statement (Ctl + Enter)


1
สิ่งนี้มีประโยชน์มาก ขอบคุณ!
sunlover3

1
ใช้ได้กับฉันกับ Run Statement (Ctl + Enter) ด้วย
Pascal R.

21

คุณสามารถตั้งค่าเสียงสะท้อนเป็นเปิด:

set echo on
REM Querying table
select * from dual;

ใน SQLDeveloper กด F5 เพื่อเรียกใช้เป็นสคริปต์


ฉันยอมรับสิ่งนี้เป็นคำตอบ แต่ฉันเห็นว่าคำตอบอื่นมีคะแนนมากกว่านั้นมากฉันจึงเปลี่ยนการยอมรับเป็นคำตอบนั้น อย่างไรก็ตามสิ่งนี้ได้ผลสำหรับฉันและเป็นคำตอบที่ดี
วันพฤหัสบดีที่


9

คำตอบหลักทิ้งขั้นตอนสำหรับการติดตั้งใหม่ซึ่งต้องเปิดหน้าต่างเอาต์พุต dbms

ป้อนคำอธิบายภาพที่นี่

จากนั้นสคริปต์ที่ฉันใช้:

dbms_output.put_line('Start');

สคริปต์อื่น:

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

7

สำหรับฉันฉันทำได้แค่ทำให้ใช้งานได้

set serveroutput on format word_wrapped;

การห่อและ WRAPPED เพิ่งเกิดข้อผิดพลาด: คำสั่ง SQLPLUS ล้มเหลว - อาร์กิวเมนต์ไม่เพียงพอ


1

หากคุณไม่ต้องการให้คำสั่ง SQL ทั้งหมดของคุณถูกสะท้อน แต่คุณต้องการเพียงแค่เห็นผลลัพธ์ที่สามารถระบุตัวตนได้ง่ายของสคริปต์ของคุณให้ดำเนินการดังนี้:

ตั้งค่าเสียงสะท้อน

REM MyFirstTable

ตั้งค่าเสียงสะท้อน

ลบจาก MyFirstTable;

ตั้งค่าเสียงสะท้อน

REM MySecondTable

ตั้งค่าเสียงสะท้อน

ลบจาก MySecondTable;

ผลลัพธ์จากตัวอย่างด้านบนจะมีลักษณะดังนี้:

-REM MyFirstTable

ลบ 13 แถวแล้ว

-REM MySecondTable

ลบ 27 แถวแล้ว


0

ถ้าฉันเริ่มต้น - สิ้นสุดมันเป็นข้อผิดพลาด สำหรับฉันมันใช้งานได้ (ไม่มีอะไรจำเป็นอีกแล้ว):

set serveroutput on;
begin
DBMS_OUTPUT.PUT_LINE('testing');
end;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.