PLSQLユーザー定義の表タイプおよび結合

ユーザー定義のテーブルタイプがあるとします。

create or replace type SrcCodeTbl is table of varchar(20);

私はこのタイプのパラメータを持つ手続きを持っています:

create or replace procedure Blah.MyProc( srcCodesIN in SrcCodeTbl )

プロシージャ内の別のテーブルで選択/結合ステートメントの srcCodesIn を使用できますか?それを動作させようとしていて、コンパイラは報告を保持します:

select distinct someVal into outVal 
from OtherTable ot, srcCodesIn sc 
where ot.ID = sc.column_val;

Error(28,22): PL/SQL: ORA-00942: table or view does not exist

私はその文法を使って単純なことを確信していますが、私はそれを理解することができませんでした。私はfor-loopで作業するためのものを手に入れましたが、別の方法があれば興味があります。ありがとう。

0

1 答え

いかがですか

SELECT DISTINCT someVal 
INTO outVal 
FROM OtherTable ot, TABLE(srcCodesIn) sc 
WHERE ot.ID = sc.column_value
2
追加された
どのオラクルのバージョンを使用していますか?
追加された 著者 Zeus,
コンピュータはすべて正確な定義に関するものです。 UDTの「表」は、データ・ディクショナリに関する限りTYPEではないTYPEです。そのため、SQLステートメントで使用するには、それをキャストする必要があります。
追加された 著者 APC,
うん、それは動作します。私はオリジナルの(編集する前の)答えを試してみました。そして、それは漠然としたエラーメッセージを吐き出しました。興味深いことに、テーブルとして使用する前にUDTテーブルタイプをテーブルにキャストする必要があります。他の男が既にbazillionポイントを持っているので、あなたに答えを与えてください。 8)
追加された 著者 MonkeyWrench,
ええ、私は私のローカルオラクルでそれをシミュレートしてみましたので、それをテーブルに変換する前に型キャストして、それを後で削除するのを忘れました:)ポイントありがとう:)
追加された 著者 phil,