Stored procedures 将数组作为参数传递给plsql过程

Stored procedures 将数组作为参数传递给plsql过程,stored-procedures,plsql,oracle-sqldeveloper,Stored Procedures,Plsql,Oracle Sqldeveloper,我需要和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

我需要和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\u ARRAY
是一种自定义类型,定义如下

create or replace 
TYPE NUM_ARRAY 
AS VARRAY(40) OF NUMBER(38, 0);
在sql developer中运行存储过程时,我希望输入SAMPLE_数组的值。我试过
(22211111234)
[22211111234]
{22211111234}
每次我都会得到“表达式类型错误”错误


我迫切需要这帮家伙的帮助……

您没有说明如何为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>;
将类型varray\u TYPE\u名称创建或替换为的varray(n);
或者,在PL/SQL块中:

TYPE varray_type_name IS VARRAY(n) of <element_type>
TYPE varray\u TYPE\u name是的varray(n)

有关更多详细信息,请参阅。

您没有说明如何为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>;
将类型varray\u TYPE\u名称创建或替换为的varray(n);
或者,在PL/SQL块中:

TYPE varray_type_name IS VARRAY(n) of <element_type>
TYPE varray\u TYPE\u name是的varray(n)

有关更多详细信息,请参阅

如何通过ADO.net感知NUM_数组?@horbleguy抱歉,这超出了我的知识范围。我建议你发布另一个问题并标记ADO如何通过ADO.net感知NUM_数组?@horbleguy抱歉,这超出了我的知识范围。我建议你再贴一个问题和标签