Du bör inte skriva kod för att undkomma strängen. Det faktum att du behöver undkomma strängen innebär att du gör något fel.
Om du använder bindningsvariabler i din INSERT
uttalande, kommer det inte att finnas något behov av att undkomma strängen när det finns ett enkelt citat. Det kommer inte heller att finnas något behov av att försöka identifiera SQL-injektionsattacker i strängen, vilket är ett stort säkerhetsproblem om du inte använder bindningsvariabler. Och du kommer inte att tvinga Oracle att analysera frågan varje gång den körs, vilket är avgörande för systemets prestanda.
Om proceduren du pratar om är skriven i PL/SQL, kommer den att använda bindningsvariabler automatiskt. Om du gissar på kolumnnamnen och antar att du använder en sekvens för att generera din primärnyckel, skulle du ha något sånt här
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;
Andra front-end-språk kommer att ha olika metoder för att använda bindningsvariabler. Om du till exempel skriver Java med JDBC, skulle du skapa en PreparedStatement
och anrop sedan lämplig setXXX
metoder, dvs.
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();