ORACLE将用户定义的对象类型作为参数传递给过程
问题描述:
我试图通过在过程中使用FORALL尝试批量插入。ORACLE将用户定义的对象类型作为参数传递给过程
我曾尝试下面的步骤来创建程序:
**CREATE TYPE SECID_TABLE as TABLE OF VARCHAR2 INDEX BY NUMBER;**
CREATE PROCEDURE ASP_STOCK
(**p_secid IN SECID_TABLE**
) as
BEGIN
..
END;
但上述两种说法不进行编译。我对oracle非常陌生,并且使用aqua studio,它在错误声明中看起来并不冗长。
有人能指导我吗?
答
这里有两个问题。
第一个问题是,您无法创建索引类型为NUMBER
的索引表。 SQLFiddle here将索引类型更改为PLS_INTEGER
。
但即使你这样做,你仍然会得到错误,因为像这样的索引表是PL/SQL的构造。 SQLFiddle here。
你将不得不做其他事情。尝试一个无索引的TABLE类型,这是在模式级别允许的。 SQLFiddle here
祝你好运。 “
”以上两条语句不编译。“什么是错误信息?在CREATE TYPE语句之后的新行上是否只需要一个'/'字符?你真的需要使用关联数组还是可以删除'INDEX BY NUMBER'子句并将其用作集合? – MT0