Tôi tiếp tục quên điều này và quay lại với nó một lần nữa! Tôi nghĩ câu trả lời tốt nhất là sự kết hợp của các câu trả lời được cung cấp cho đến nay.
Thứ nhất, &là tiền tố biến trong sqlplus / sqldeveloper, do đó có vấn đề - khi nó xuất hiện, nó được mong đợi là một phần của tên biến.
SET DEFINE OFF sẽ ngừng phiên dịch sqlplus và theo cách này.
Nhưng điều gì sẽ xảy ra nếu bạn cần sử dụng các biến sqlplus và chữ &ký tự?
- Bạn cần BẬT ĐỊNH NGHĨA để các biến hoạt động
- Và ĐẶT BẬT CẢM XÚC để thoát khỏi việc sử dụng &.
ví dụ:
set define on
set escape on
define myvar=/forth
select 'back\\ \& &myvar' as swing from dual;
Sản xuất:
old 1: select 'back\\ \& &myvar' from dual
new 1: select 'back\ & /forth' from dual
SWING
--------------
back\ & /forth
Nếu bạn muốn sử dụng một ký tự thoát khác:
set define on
set escape '#'
define myvar=/forth
select 'back\ #& &myvar' as swing from dual;
Khi bạn đặt một ký tự thoát cụ thể, bạn có thể thấy 'SP2-0272:ký tự thoát không được là chữ và số hoặc khoảng trắng'. Điều này có thể có nghĩa là bạn đã có ký tự thoát được xác định và mọi thứ trở nên tự tham chiếu một cách khủng khiếp. Cách rõ ràng để tránh vấn đề này là trước tiên hãy thực hiện thoát:
set escape off
set escape '#'