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

हम प्रक्रिया में IN पैरामीटर से VARRAY का मान कैसे प्राप्त कर सकते हैं?

मैंने प्रक्रिया के साथ अनाम ब्लॉक बनाया है dynamic_query_build। वहां जोड़ा गया कोड, जो VARCHAR2 चर को varray में विभाजित करेगा। मुझे लगता है, आपके प्रश्न की कुंजी यह पंक्ति है - plan_sku_id.EXTEND (); आप गतिशील रूप से चर का विस्तार कर सकते हैं, लेकिन केवल तब तक जब तक यह परिभाषित अधिकतम तक नहीं पहुंच जाता (आपके मामले में - 999) ।

DECLARE
vr_plan_sku_id varchar2(200) := '5863314,5863315';
PROCEDURE dynamic_query_build(
    vr_plan_sku_id IN VARCHAR2 )
IS
type plan_sku_id_array IS VARRAY(999) OF VARCHAR2(5000);
plan_sku_id plan_sku_id_array;
total           INTEGER;

position PLS_INTEGER := 0;
last_position PLS_INTEGER := 1;
tmp VARCHAR2(5000);
counter PLS_INTEGER := 1;
BEGIN
  plan_sku_id := plan_sku_id_array();
  LOOP
    position := INSTR(vr_plan_sku_id, ',', last_position);
    IF position > 0 THEN
      tmp := SUBSTR(vr_plan_sku_id, last_position, position - last_position);
      last_position := position + 1;
    ELSE
      tmp := SUBSTR(vr_plan_sku_id, last_position);
    END IF;
    plan_sku_id.EXTEND();
    plan_sku_id(counter) := tmp;
    counter := counter + 1;
    EXIT WHEN position = 0 OR counter > 10;
  END LOOP;
  total          := plan_sku_id.count;
  FOR i          IN 1 .. total
  LOOP
    dbms_output.put_line(plan_sku_id(i));
  END LOOP;
EXCEPTION
WHEN OTHERS THEN
  raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END dynamic_query_build;
BEGIN
   dynamic_query_build(vr_plan_sku_id);
END;
/


  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 में केवल गैर-अल्फ़ान्यूमेरिक वर्ण वाली पंक्तियों को वापस करने के 2 तरीके

  3. थोक संग्रह के साथ तालिका फ़ंक्शन अमान्य डेटाटाइप फेंकता है

  4. मैं ORA-00911:अमान्य वर्ण त्रुटि को कैसे हल कर सकता हूं?

  5. विंडोिंग क्लॉज के बराबर LISTAGG