Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kesalahan saat memasukkan data yang memiliki tanda kutip tunggal di antaranya

Anda tidak boleh menulis kode untuk keluar dari string. Fakta bahwa Anda harus keluar dari string menyiratkan bahwa Anda melakukan sesuatu yang salah.

Jika Anda menggunakan variabel ikat di INSERT . Anda pernyataan, tidak perlu keluar dari string ketika ada kutipan tunggal yang menyimpang. Juga tidak perlu mencoba mengidentifikasi serangan injeksi SQL dalam string yang merupakan masalah keamanan besar jika Anda tidak menggunakan variabel bind. Dan Anda tidak akan memaksa Oracle untuk mengurai kueri setiap kali dijalankan yang sangat penting untuk kinerja sistem.

Jika prosedur yang Anda bicarakan ditulis dalam PL/SQL, itu akan menggunakan variabel bind secara otomatis. Menebak nama kolom dan mengasumsikan bahwa Anda menggunakan urutan untuk menghasilkan kunci utama Anda, Anda akan memiliki sesuatu seperti ini

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;

Bahasa front-end lainnya akan memiliki pendekatan berbeda untuk menggunakan variabel bind. Jika Anda menulis Java menggunakan JDBC, misalnya, Anda akan membuat PreparedStatement lalu panggil setXXX yang sesuai metode, yaitu

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. Memformat hasil kueri dalam SQL*Plus

  2. LN() Fungsi di Oracle

  3. nama tabel dinamis di kursor

  4. Oracle SQL Loop melalui Rentang Tanggal

  5. SQL*Plus CSV Ekspor lebih lambat dari SQL Developer