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

एसक्यूएल डेवलपर में एसिंक संग्रहीत प्रक्रिया निष्पादित करें

चूंकि आप एन सत्रों को अनुकरण करना चाहते हैं, प्रत्येक प्रक्रिया को 1000/एन बार कॉल करना, मैं शायद कुछ ऐसा करूंगा

CREATE OR REPLACE PROCEDURE call_myproc_n_times( p_n IN NUMBER )
AS
  p_status         NUMBER;
  p_ora_error_code VARCHAR2(1000);
  p_ora_error_msg  VARCHAR2(1000);
BEGIN
  FOR i IN 1 .. p_n 
  LOOP
    myproc( 'test', 
            p_status, 
            p_ora_error_code, 
            p_ora_error_msg );
  END LOOP;
END;

DECLARE
  l_num_sessions     number := 10;
  l_exec_per_session number := 100;
  l_jobno            pls_integer;
BEGIN
  FOR i IN 1 .. l_num_sessions
  LOOP
    dbms_job.submit( 
      l_jobno,
      'BEGIN ' ||
      '  call_myproc_n_times( ' || l_exec_per_session || ' ); ' ||
      'END;',
      sysdate + interval '1' minute );
  END LOOP;
  commit;
END;

यह उदाहरण 10 सत्र शुरू करेगा, जिनमें से प्रत्येक आपके डेटाबेस के JOB_QUEUE_PROCESSES को मानकर लगातार 100 बार प्रक्रिया निष्पादित करेगा। कम से कम 10 का अर्थ है कि Oracle को पृष्ठभूमि में एक साथ 10 कार्य चलाने की अनुमति है। CALL_MYPROC_N_TIMES बनाना प्रक्रिया सख्ती से जरूरी नहीं है-- यह नौकरी में निष्पादित करने के लिए स्ट्रिंग को आसान बनाता है।

एक विकल्प यह होगा कि 1000 नौकरियां सबमिट की जाएं, जिनमें से प्रत्येक को केवल MYPROC . कहा जाता है एक बार और JOB_QUEUE_PROCESSES . पर निर्भर एक साथ चलने वाली नौकरियों की संख्या को सीमित करने के लिए पैरामीटर। यह काम करेगा, यदि आप एक साथ कम सत्र चलाना चाहते हैं तो डेटाबेस पैरामीटर बदलना अधिक कठिन है-- L_NUM_SESSIONS समायोजित करना आसान है मेरे द्वारा पोस्ट किए गए कोड में।




  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. JDBC में उपयोग के लिए SQL क्वेरी की WHERE स्थितियों में एक ही पैरामीटर का कई बार उपयोग करें

  3. SQL - दायां कोष्ठक गुम है

  4. मैं रूबी में ओरेकल संग्रहीत प्रक्रिया कैसे चला सकता हूं?

  5. ORA-06508:PL/SQL:प्रोग्राम यूनिट को कॉल नहीं किया जा सका