sql >> Database >  >> RDS >> Oracle

hoe kunnen we de waarde van VARRAY van IN Parameter in procedure krijgen?

Ik heb een anoniem blok gemaakt met de procedure dynamic_query_build. Daar code toegevoegd, die de variabele VARCHAR2 in varray splitst. Ik denk dat de sleutel tot je vraag deze regel is - plan_sku_id.EXTEND(); Je kunt varray dynamisch uitbreiden, maar alleen tot het het gedefinieerde maximum bereikt (in jouw geval - 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. Meerdere checkbox-gegevens opslaan in MySQL-database met PHP

  2. Gebruik mysql_fetch_row om resultaten uit de database op te halen en in de array in te voegen met behulp van PHP en mysqli?

  3. Is de maat die bij NVARCHAR wordt gebruikt van belang?

  4. Roep het Java-programma op vanuit de Oracle-databasetrigger