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

pl/sql फ़ंक्शन को कितनी बार कहा जाता है?

यह उस तरह की स्थिति है जहां कुछ प्रयोग उपयोगी होते हैं (यह 10g पर आयोजित किया गया था)। निम्नलिखित क्वेरी का उपयोग करके, हम बता सकते हैं कि समान पैरामीटर (इस मामले में, कोई नहीं) का उपयोग करके सामान्य कार्यों को हर बार कॉल किए जाने पर निष्पादित किया जाएगा:

select dbms_random.value() from all_tables

ऐसा इसलिए है क्योंकि Oracle मानता है कि कोई फ़ंक्शन समान मान को तब तक लगातार वापस नहीं करेगा जब तक कि आप इसे अन्यथा नहीं बताते। हम निर्धारक . का उपयोग करके एक फ़ंक्शन बनाकर ऐसा कर सकते हैं कीवर्ड:

CREATE FUNCTION rand_det
   RETURN NUMBER
   DETERMINISTIC AS
BEGIN
   RETURN DBMS_RANDOM.VALUE ();
END;

dbms_random के बजाय इस फ़ंक्शन का उपयोग करना पहली क्वेरी में हमें बताता है कि कई कॉलों के बावजूद क्वेरी को केवल एक बार निष्पादित किया जा रहा है। लेकिन यह केवल चयन . को स्पष्ट करता है खंड। क्या होगा यदि हम चयन . दोनों में एक ही नियतात्मक फलन का उपयोग करते हैं और एक कहां खंड। हम निम्न क्वेरी का उपयोग करके इसका परीक्षण कर सकते हैं:

SELECT rand_det
FROM   all_tables
WHERE  rand_det > .5;

हमारे प्रमाण को देखने के लिए आपको इसे कई बार चलाना पड़ सकता है, लेकिन, अंततः, आपको 0.5 से कम मानों की एक सूची दिखाई देगी। यह हमें इस बात का प्रमाण प्रदान करता है कि नियतात्मक कार्य भी दो बार निष्पादित किया जा रहा है:एक बार प्रत्येक अनुभाग के लिए यह दिखाई देता है। एक विकल्प के रूप में, आप हमारे नियतात्मक कार्य को निम्नानुसार संशोधित कर सकते हैं, फिर बाद की क्वेरी को चला सकते हैं, जो <को लिखी गई 2 पंक्तियों को प्रकट करेगा। कोड>DBMS_OUTPUT ।

CREATE OR REPLACE FUNCTION rand_det
   RETURN NUMBER
   DETERMINISTIC AS
BEGIN
   DBMS_OUTPUT.put_line ('Called!');
   RETURN DBMS_RANDOM.VALUE ();
END;

SELECT rand_det
FROM   all_tables;


  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 SQL में पंक्तियों को कॉलम में कैसे बदलें

  3. Oracle XMLType का उपयोग करते समय नल को संभालना

  4. Oracle एपेक्स 5.0 - स्थिर छवि प्रदर्शित करें

  5. एसक्यूएल शून्य मूल्यों के साथ पंक्ति डेटा से मिन मान का चयन