Câu trả lời:
Điều này có thể làm việc cho bạn:
set define off
Nếu không, ký hiệu và cần phải ở cuối một chuỗi,
'StackOverflow &' || ' you'
CHỈNH SỬA: Tôi rất vui khi nhấp chuột khi lưu ... Điều này được tham khảo từ một blog .
Nếu đôi khi bạn sử dụng các biến thay thế, bạn có thể không muốn tắt định nghĩa. Trong những trường hợp này, bạn có thể chuyển đổi dấu và từ số tương đương của nó như trong || Chr(38) ||
hoặc thêm nó dưới dạng một ký tự như trong || '&' ||
.
Tôi đã giải quyết bằng mã bên dưới:
set escape on
và đặt \ bên cạnh & ở bên trái 'value_\&_intert'
Att
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
nhưng nó đã báo cho tôi lỗi ORA-01780: string literal required
.
Bạn có thể đặt ký tự đặc biệt, được tìm kiếm khi thực thi một tập lệnh, thành một giá trị khác bằng cách sử dụng SET DEFINE <1_CHARACTER>
Theo mặc định, chức năng DEFINE được bật và được đặt thành &
Nó có thể được tắt - như đã đề cập - nhưng nó cũng có thể tránh được bằng cách đặt nó thành một giá trị khác. Hãy biết rõ bạn đã đặt nó ở ký hiệu nào. Trong ví dụ dưới đây, tôi đã chọn ký tự #, nhưng lựa chọn đó chỉ là một ví dụ.
SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value
'AVALUE#VAR_HASH'
-----------------
a value #var_hash
SQL> set define #
SQL> r
1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value
'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value
SQL>
set xác định tắt <- Đây là giải pháp tốt nhất mà tôi tìm thấy
Tôi cũng đã thử ...
đặt xác định}
Tôi đã có thể chèn một số bản ghi có chứa ký hiệu và ký tự '&' nhưng tôi không thể sử dụng ký tự '}' vào văn bản Vì vậy, tôi quyết định sử dụng "set define off" và mọi thứ hoạt động như bình thường.
Theo Câu hỏi thường gặp hay này, có một số giải pháp.
Bạn cũng có thể thoát khỏi ký hiệu và bằng ký tự dấu gạch chéo ngược \
nếu bạn có thể sửa đổi nhận xét.
set escape on