Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

làm thế nào chúng ta có thể nhận được giá trị của VARRAY từ Tham số IN trong thủ tục

Tôi đã tạo khối ẩn danh với thủ tục dynamic_query_build. Đã thêm vào đó mã, sẽ chia biến VARCHAR2 thành varray. Tôi nghĩ, chìa khóa cho câu hỏi của bạn là dòng này - plan_sku_id.EXTEND (); Bạn có thể mở rộng varray động, nhưng chỉ cho đến khi nó đạt đến mức tối đa được xác định (trong trường hợp của bạn - 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. Làm thế nào để xem kiểu của một biến trong PL / SQL động?

  2. Hiệu suất xem Oracle với rownum

  3. Cách bật tiện ích mở rộng cho oci8 (Oracle) trong php.ini - Cảnh báo PHP:Khởi động PHP:ở dòng 0

  4. Làm thế nào để chuyển đổi múi giờ trong oracle?

  5. ... trong đó count (col)> 1