2017-10-15 14 views
-1

プロシージャで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; 

しかし、上記の二つの文はコンパイルされません。私はオラクルにとってはむしろ新しいものであり、エラー・ステートメントでは冗長ではないようなアクア・スタジオを使用しています。

私を案内してもらえますか?

+0

"上記2つのステートメントはコンパイルされません。"エラーメッセージとは何ですか? 'CREATE TYPE'ステートメントの後に新しい行に'/'文字だけが必要ですか?連想配列を本当に使用する必要がありますか、 'INDEX BY NUMBER'節を削除してコレクションとして使用できますか? – MT0

答えて

0

ここには2つの問題があります。

最初の問題は、インデックスタイプがNUMBERのインデックス付きテーブルを作成できないことです。 SQLFiddle hereインデックスタイプをPLS_INTEGERに変更します。

ただし、このような場合でも、このような索引付け表はPL/SQL専用の構成であるため、エラーが発生します。 SQLFiddle here

あなたは別のことをする必要があります。スキーマレベルで許可されているインデックス化されていないTABLE型を試してください。 SQLFiddle here

運が良かった。

関連する問題