ORACLE将用户定义的对象类型作为参数传递给过程

时间:2017-10-15 00:39:44

标签: oracle procedure

我试图通过在过程中使用FORALL来尝试批量插入。

我尝试了以下步骤来创建程序:

**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,它在错误陈述中似乎并不详细。

有人可以指导我吗?

1 个答案:

答案 0 :(得分:0)

这里有两个问题。

第一个问题是您无法创建索引类型为NUMBER的索引表。 SQLFiddle here将索引类型更改为PLS_INTEGER

但即使你这样做,你仍然会得到错误,因为像这样的索引表只是一个PL / SQL构造。 SQLFiddle here

您将不得不做其他事情。尝试使用未编制索引的TABLE类型,这在模式级别是允许的。 SQLFiddle here

祝你好运。