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

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,它在错误声明中看起来并不冗长。

有人能指导我吗?

+0

”以上两条语句不编译。“什么是错误信息?在CREATE TYPE语句之后的新行上是否只需要一个'/'字符?你真的需要使用关联数组还是可以删除'INDEX BY NUMBER'子句并将其用作集合? – MT0

这里有两个问题。

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

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

你将不得不做其他事情。尝试一个无索引的TABLE类型,这是在模式级别允许的。 SQLFiddle here

祝你好运。 “