Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lỗi khi chèn dữ liệu có dấu nháy đơn giữa nó

Bạn không nên viết mã để thoát khỏi chuỗi. Việc bạn cần thoát khỏi chuỗi ngụ ý rằng bạn đang làm sai điều gì đó.

Nếu bạn đang sử dụng các biến liên kết trong INSERT của mình câu lệnh, sẽ không cần phải thoát khỏi chuỗi khi có một câu trích dẫn đơn lẻ bị lạc. Cũng sẽ không cần phải cố gắng xác định các cuộc tấn công SQL injection trong chuỗi, đây là một vấn đề bảo mật lớn nếu bạn không sử dụng các biến liên kết. Và bạn sẽ không buộc Oracle phải phân tích cú pháp truy vấn mỗi khi nó được thực thi, điều quan trọng đối với hiệu suất hệ thống.

Nếu thủ tục bạn đang nói đến được viết bằng PL / SQL, nó sẽ tự động sử dụng các biến liên kết. Đoán tên cột và giả sử rằng bạn đang sử dụng một chuỗi để tạo khóa chính của mình, bạn sẽ có một cái gì đó như thế này

CREATE PROCEDURE insert_rtf_clob( p_clob IN NOCOPY CLOB )
AS
BEGIN
  INSERT INTO rtf_clob( rtf_clob_id, rtf_clob_value )
    VALUES( seq_rtf_clob_id.nextval, p_clob );
END;

Các ngôn ngữ front-end khác sẽ có các cách tiếp cận khác nhau để sử dụng các biến ràng buộc. Ví dụ:nếu bạn đang viết Java bằng JDBC, bạn sẽ tạo một PreparedStatement và sau đó gọi setXXX thích hợp phương pháp, tức là

PreparedStatement stmt = conn.prepareStatement( "INSERT INTO rtf_clob VALUES( ?, ? )" );
stmt.setInt( 1, 1 ); // Set column 1 to a value of 1
stmt.setString( 2, someStringVariable ); // Set column 2 to someStringVariable
stmt.executeUpdate();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EM 12c Điều chỉnh Giá trị Ngưỡng

  2. Làm cách nào để xuất kết quả truy vấn sang Excel trong Oracle SQL Developer?

  3. Cập nhật kích hoạt Oracle ở một bảng khác

  4. Sự khác biệt giữa hai giá trị Năm Tháng và Ngày trong Oracle

  5. Làm thế nào để sử dụng tiện ích xuất dữ liệu bơm dữ liệu của Oracle để tạo tệp kết xuất trong máy cục bộ?