Oracle
 sql >> база данни >  >> RDS >> Oracle

Грешка при вмъкване на данни с единични кавички между тях

Не трябва да пишете код, за да избегнете низа. Фактът, че трябва да избегнете низа, означава, че правите нещо нередно.

Ако използвате променливи за свързване във вашия INSERT оператор, няма да има нужда да избягвате низа, когато има заблудени единични кавички. Също така няма да има нужда да се опитвате да идентифицирате атаки за инжектиране на SQL в низа, което е огромен проблем със сигурността, ако не използвате свързващи променливи. И няма да принуждавате Oracle да анализира заявката всеки път, когато се изпълни, което е критично за производителността на системата.

Ако процедурата, за която говорите, е написана на PL/SQL, тя автоматично ще използва свързващи променливи. Ако познаете имената на колоните и приемете, че използвате последователност за генериране на вашия първичен ключ, ще имате нещо подобно

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;

Други езици за интерфейс ще имат различни подходи за използване на свързващи променливи. Ако пишете Java с помощта на JDBC, например, бихте създали PreparedStatement и след това извикайте подходящ setXXX методи, т.е.

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. Данни от oracle в utf-8 с php

  2. Как да форматирам колона NUMBER в Oracle?

  3. oracle 11g и интеграция на hibernate spring и jsf

  4. Защо много таблици ORACLE по подразбиране 12c?

  5. Намерете средната стойност на id за един месец