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

प्रारंभिक संग्रह पीएल/एसक्यूएल का संदर्भ

आपकी परीक्षण प्रक्रिया में आपके पास v . है एक आउट पैरामीटर के रूप में घोषित - इसका मतलब है कि प्रक्रिया को प्रक्रिया में आउटपुट संग्रह को प्रारंभ करने की आवश्यकता है (उदाहरण के लिए v := T(); ) भले ही आप u_t . को इनिशियलाइज़ करने के लिए कॉलिंग ब्लॉक को बदल दें यह मदद नहीं करेगा, क्योंकि u_t संग्रह प्रक्रिया में पारित नहीं किया जाता है - यह केवल वही प्राप्त करता है जो प्रक्रिया वापस चली जाती है।

अपना कोड इस प्रकार बदलें:

CREATE OR REPLACE PROCEDURE TEST ( u IN T, v OUT T) IS
  i NUMBER := u.FIRST;
BEGIN
  v := T();
  v.EXTEND(u.COUNT);

  IF i IS NOT NULL THEN
    LOOP
      v(i) := u(i);
      i := u.NEXT(i);
      EXIT WHEN i IS NULL;
    END LOOP;
  END IF;
END TEST;

DECLARE
  v_t T;
  u_t T;
BEGIN
  v_t := T();
  v_t.EXTEND(2);

  v_t(1) := 'This is test1';
  v_t(2) := 'This is test2';

  TEST(v_t, u_t);

  FOR i IN u_t.FIRST..u_t.LAST LOOP
    DBMS_OUTPUT.PUT_LINE(u_t(i));
  END LOOP;
END;

कृपया ध्यान दें कि PL/SQL में स्ट्रिंग स्थिरांक एकल-उद्धरणों में संलग्न होने चाहिए, न कि दोहरे उद्धरणों में।

इसके अलावा - समान चर नामों का उपयोग करना जो प्रक्रिया में विपरीत अर्थ रखते हैं और कॉलिंग ब्लॉक केवल भ्रम को जोड़ता है। सार्थक नामों का उपयोग करने की आदत डालें और आप बाद में अपने आप को बहुत भ्रम से बचा लेंगे।

साझा करें और आनंद लें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle माइनस ऑपरेटर समझाया गया

  2. Oracle 12c में गतिशील रूप से चयन कथन बनाएँ

  3. Oracle:पैकेज के अंदर संग्रहीत कार्यविधि को कॉल करें

  4. ORACLE DB में लगभग 300 तालिकाओं से csv या txt फ़ाइलों में डेटा कैसे निर्यात करें?

  5. Oracle - एक से अनेक संबंधों के साथ, न्यूनतम मान के आधार पर अलग-अलग पंक्तियों का चयन करें