我需要和sql开发人员一起玩,我在这里碰到了一堵墙...... 我需要在表上运行一个简单的更新查询,我想传入一个ID数组并更新那些ID指向的所有行。
我编写了以下存储过程
PROCEDURE SAMPLE_PROCEDURE(SAMPLE_ARRAY IN NUM_ARRAY)
AS
BEGIN
UPDATE RETURNLIST_PICKLIST_MAPPING
SET PICKLIST_ID = 1111111
WHERE RETURNLIST_ID IN (SELECT * FROM TABLE(SAMPLE_ARRAY));
END SAMPLE_PROCEDURE;
NUM_ARRAY
是一个定义如下的自定义类型
create or replace
TYPE NUM_ARRAY
AS VARRAY(40) OF NUMBER(38, 0);
当我在sql developer中运行存储过程时,我想输入SAMPLE_ARRAY的值。我已尝试(2222,1111,1234)
和[2222,1111,1234]
以及{2222,1111,1234}
,每次我都会收到“表达式错误类型”错误。
我迫切需要帮助这些家伙......
答案 0 :(得分:3)
您没有显示如何为varray变量赋值。但是,我相信你可以这样做:
DECLARE
V_T NUM_ARRAY;
BEGIN
V_T := NUM_ARRAY(1,2,3);
SAMPLE_PROCEDURE(V_T);
END;
/
通常,您可以按如下方式定义独立VARRAY:
CREATE Or REPLACE TYPE varray_type_name AS VARRAY(n) OF <element_type>;
或者,在PL / SQL块中:
TYPE varray_type_name IS VARRAY(n) of <element_type>
有关详细信息,请参阅this