これはPL/SQLを知っている人にとってはおそらく簡単な質問です。 私が入力中varchar型の配列を受け取り、ストアドプロシージャがあります。ループ内で選択を実行するPL/SQLと戻りカーソル?
TYPE MULTI is table of VARCHAR(15) index by BINARY_INTEGER;
PROCEDURE MYPROC(
SINGLE IN MULTI,
P_RESULT OUT MY_PCK.MYCURSOR,
P_SOMETHING OUT VARCHAR2,
);
を私は他のケースでそれをテストしているので、カーソルは動作しますが、これは、配列パラメータを持つ最初のです。
私は体に問題があります。私はどのように私はカーソルから選択から得る各値を割り当てることができますか?
BEGIN
FOR i IN SINGLE.first .. SINGLE.last
LOOP
--BEGIN OPEN P_RESULT FOR this --this on left gives me error
SELECT MT.DESCR INTO P_SOMETHING
FROM MYTABLE1 MT
WHERE MT.IDS = SINGLE(i)
AND and rownum < 2;
--dbms_output.put_line(SINGLE(i)); --if i use this instead of select i get the values i send to this procedure.
END LOOP;
私も試してみました:
SELECT MT.DESCR INTO P_RESULT but gives error
を私が間違ってやっていますか? アドバイスありがとうございます。
あなたにはどんなエラーがありますか? – I3rutt
PLS-00428:このSELECT文ではINTO句が必要です。もし私が次のようなinto句を使用していれば:MT_DESCR INTO P_SOMETHINGここでP_SOMETHINGはvarchar2の出力です。ORA-01422:exact fetchは要求された行数以上を返します。私は本当にこれを解決する方法がわかりません... –
すぐに解決するには、WHERE句でこれを追加してみてください:rownum <2 – I3rutt