sql >> Base de Datos >  >> RDS >> Oracle

Error al insertar datos con comillas simples entre ellos

No debe escribir código para escapar de la cadena. El hecho de que necesite escapar de la cadena implica que está haciendo algo mal.

Si está utilizando variables de vinculación en su INSERT declaración, no habrá necesidad de escapar de la cadena cuando hay una comilla simple perdida. Tampoco habrá necesidad de intentar identificar los ataques de inyección SQL en la cadena, lo cual es un gran problema de seguridad si no está utilizando variables de vinculación. Y no obligará a Oracle a analizar la consulta cada vez que se ejecute, lo cual es fundamental para el rendimiento del sistema.

Si el procedimiento del que está hablando está escrito en PL/SQL, utilizará variables de vinculación automáticamente. Adivinando los nombres de las columnas y asumiendo que está usando una secuencia para generar su clave principal, tendría algo como esto

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;

Otros lenguajes front-end tendrán diferentes enfoques para usar variables de vinculación. Si está escribiendo Java usando JDBC, por ejemplo, crearía una PreparedStatement y luego llame al setXXX apropiado métodos, es decir,

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();