下面的代码作为对象调用MY_TYPE,用于循环到执行更新。
CREATE OR REPLACE PROCEDURE OTTWEB.MY_PROCEDURE (
MY_ARRAY IN MY_TYPE
)
IS
BEGIN
FOR i IN 1..MY_ARRAY.COUNT LOOP
UPDATE BULKSMSDETAILS SET STATUS = MY_ARRAY(i).STATUS, REMARKS = MY_ARRAY(i).REMARKS WHERE ID = MY_ARRAY(i).ID;
END LOOP;
END;
取消打包以编译上述sp。错误消息:PLS-00302:必须声明组件“COUNT”
下面是对象
CREATE OR REPLACE TYPE OTTWEB.MY_TYPE AS OBJECT
(
ID VARCHAR2(1000),
STATUS NUMBER,
REMARKS VARCHAR2(1000)
);
3条答案
按热度按时间6ioyuze21#
举个例子。
首先键入:
样品表:
程序:
测试:
结果:
kuuvgm7e2#
MY_TYPE是一种对象类型,而不是集合类型。为了使用COUNT方法并循环遍历元素,您需要基于对象类型MY_TYPE创建一个集合类型(嵌套表或varray)。
修改该过程以接受MY_TYPE_TABLE作为输入参数:
它应该能够成功编译,并且可以使用MY_TYPE对象的嵌套表来更新BULKSMSDETAILS。
mw3dktmi3#
你不需要循环,例如你可以使用合并