Stored procedures 将数组作为参数传递给plsql过程
我需要和sql开发人员一起玩,我在这里遇到了一堵墙。。。 我需要在一个表上运行一个简单的更新查询,我想传入一个ID数组并更新这些ID所指向的所有行 我已经编写了以下存储过程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
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抱歉,这超出了我的知识范围。我建议你再贴一个问题和标签