我有一個plsql過程,它需要一個數據數組並更新一堆記錄,我可以使用for循環執行此操作。我真的可以使用一些幫助,找出沒有循環做到這一點。使用「IN」而不是「FOR」循環與集合
包裝規格和身體:
create or replace PACKAGE ARRAY_EXAMPLE AS
type arrtype is table of test_table.name%TYPE index by pls_integer;
PROCEDURE PROCESS_ARRAY(stringArrayIn IN arrtype
, p_city varchar2
, p_phone number);
END;
/
create or replace PACKAGE BODY ARRAY_EXAMPLE AS
PROCEDURE PROCESS_ARRAY(stringArrayIn IN arrtype
, p_city varchar2
, p_phone number) IS
BEGIN
FOR i IN 1..stringArrayIn.Count
LOOP
update test_table t
set t.city = p_city
where t.name = stringArrayIn(i)
and t.phone = p_phone;
END LOOP;
END;
END;
/
我想擁有什麼:
create or replace PACKAGE BODY ARRAY_EXAMPLE AS
PROCEDURE PROCESS_ARRAY(stringArrayIn IN arrtype
, p_city varchar2
, p_phone number) IS
BEGIN
update test_table t
set t.city = p_city
where t.phone = p_phone
and t.name in (stringArrayIn);
END;
END;
我得到的錯誤,當我嘗試上述情況,請大家幫忙。非常感謝你提前。
感謝您的回覆,但我無法獲得索引,如果我在包體外聲明,是否有解決方法? – Radan
您似乎將關聯數組用作普通數組(即從1到n而非稀疏數組索引)。你爲什麼需要這個索引? – MT0
我決定採用這種方法,使用這個http://www.oracle.com/technetwork/articles/fuecks-sps-095636.html – Radan