金曜日, 12月 21, 2007

PL/SQLで検索結果リストをIN句に利用する

Ask Tom "varying elements in IN list"

なぜか、パッケージの中にTYPE宣言をすると、エラーになってしまうので、
仕方なく、
CREATE OR REPLACE TYPE XXXTYPE AS TABLE OF NUMBER;
で作成して、

PL/SQLでは
AND XXX_ID IN (SELECT * FROM TABLE( CAST (memberIdList AS memberIdTab)))
のようにすることで、なんとなく解決。

ちなみに、ファンクションでCURSORを返すのは、
OPEN cur1 FOR
SELECT ....
;

RETURN cur1;
ではうまくいくが、
SQLを事前に宣言してから、OPENだけで、次にRETURNしようとするとエラーになってしまう。

なぜだ。。。