Vấn đề là SQL * Plus đang diễn giải ;
đầu tiên của bạn như là dấu chấm hết cho lệnh. Bạn có thể nhận thấy rằng nếu bạn viết các lệnh của mình vào một tệp văn bản và thực thi lệnh đó (hoặc chỉnh sửa nó trong trình soạn thảo văn bản từ SQL * Plus) thì nó sẽ hoạt động.
Để làm cho nó hoạt động với tính năng nhập trực tiếp, nếu bạn thực sự muốn làm điều đó (có vẻ khó xảy ra nếu chúng sẽ rất lâu!), Bạn có thể tắt tính năng tự động phát hiện dấu chấm dứt bằng SET SQLTERMINATOR off
. Lưu ý rằng bạn sẽ phải nói với SQL * Plus rằng bạn đã hoàn tất và nó sẽ thực thi với /
hướng dẫn dưới dạng ;
thứ hai cũng bị bỏ qua.
SQL> SPOOL myscript.sql
SQL> SET SQLTERMINATOR off
SQL> SELECT q'[SPOOL log
2 SELECT COUNT(*) FROM DUAL;
3 PROMPT Done.
4 ]' FROM DUAL
5 /
SPOOL log
SELECT COUNT(*) FROM DUAL;
PROMPT Done.
Nếu bạn đang xây dựng chúng từ từ điển dữ liệu, một tùy chọn khác là sử dụng PL / SQL để thực hiện các truy vấn và thao tác và dbms_output
để tạo ra kết quả mà bạn đang gồng mình để cuộn, miễn là kích thước tệp cuối cùng không vượt quá giới hạn bộ đệm.