Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

pl/sql - एक संग्रहीत प्रक्रिया के अंदर एक गतिशील क्वेरी का उपयोग करना

तार जोड़कर अपनी क्वेरी न बनाएं। आप अपने आप को बहुत सारे बग और कमजोरियों के लिए खुला छोड़ देते हैं, सबसे पहले SQL इंजेक्शन। गतिशील प्रश्नों का उपयोग करने की आवश्यकता बाइंड चर का उपयोग न करने को उचित नहीं ठहराती है। यदि आपको वास्तव में गतिशील प्रश्नों का उपयोग करने की आवश्यकता है (यह आपके उदाहरण से स्पष्ट नहीं है कि स्थिर अद्यतन क्यों काम नहीं करेगा?!), इसके बजाय ऐसा करें:

FOR vc2 IN (...) LOOP
   v_sql := 
       'BEGIN
            V_UPD NUMBER := 0;

            SELECT (SELECT ID_TIPO_TERR  
              FROM ZREPORTYTD_TMP 
             WHERE AUDITORIA = :p1
               AND TERRITORIO = :p2
               AND PRODUTO = :p3) 
              INTO V_UPD FROM DUAL;

            UPDATE ZReportYTD_TMP
               SET TARGET = :p4
             WHERE AUDITORIA = :p5
               AND TERRITORIO = :p6
               AND PRODUTO = :p7;
        END';
   EXECUTE IMMEDIATE v_sql USING VC2.AUDITORIA, VC2.NOME, VC2.PRODUTO, 
                                 VC2.OBJETIVO, VC2.AUDITORIA, VC2.NOME, 
                                 VC2.PRODUTO;
END LOOP;

Oracle उचित प्रकार से सही ढंग से आबद्ध होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल क्लाउड:एक स्वायत्त लेनदेन प्रसंस्करण (एटीपी) डेटाबेस बनाना

  2. Oracle में KEEP के साथ और उसके बिना विभाजन

  3. Oracle PL/SQL संग्रह - मौजूदा तालिका में तत्वों को जोड़ना

  4. पीएल/एसक्यूएल में वर्णमाला पिरामिड प्रिंट करना

  5. ऑरैकल में स्ट्रिंग में एक को कैसे जोड़ा जाए