स्ट्रिंग से बचने के लिए आपको कोड नहीं लिखना चाहिए। तथ्य यह है कि आपको स्ट्रिंग से बचने की आवश्यकता है, इसका मतलब है कि आप कुछ गलत कर रहे हैं।
यदि आप अपने INSERT
. में बाइंड वैरिएबल का उपयोग कर रहे हैं बयान, एक भटक एकल उद्धरण होने पर स्ट्रिंग से बचने की कोई आवश्यकता नहीं होगी। यदि आप बाइंड वेरिएबल्स का उपयोग नहीं कर रहे हैं तो स्ट्रिंग में एसक्यूएल इंजेक्शन हमलों की पहचान करने की कोशिश करने की कोई आवश्यकता नहीं होगी जो एक बड़ी सुरक्षा समस्या है। और आप Oracle को हर बार निष्पादित होने पर क्वेरी को पार्स करने के लिए बाध्य नहीं करेंगे जो सिस्टम के प्रदर्शन के लिए महत्वपूर्ण है।
यदि आप जिस प्रक्रिया के बारे में बात कर रहे हैं वह पीएल/एसक्यूएल में लिखी गई है, तो यह स्वचालित रूप से बाध्य चर का उपयोग करेगी। कॉलम नामों पर अनुमान लगाना और यह मानते हुए कि आप अपनी प्राथमिक कुंजी उत्पन्न करने के लिए अनुक्रम का उपयोग कर रहे हैं, आपके पास कुछ ऐसा होगा
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;
अन्य फ्रंट-एंड भाषाओं में बाइंड वेरिएबल्स का उपयोग करने के लिए अलग-अलग दृष्टिकोण होंगे। उदाहरण के लिए, यदि आप JDBC का उपयोग करके Java लिख रहे हैं, तो आप एक 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();