-1

という名前のカーソルcur(param_1 number,param_2 varchar2)が次のような 3 つの値を返すとします。

地名値
pl1 マンゴーグッド
pl2 ブドウは良くない
pl3 アップルグッド
pl4 オレンジ 非常に良い

pl1このカーソルから各値を個別に取得して操作を行う方法、取得してこれを実行したい

for y in cur1(param_1,param_2) loop
if y.place='pl1' then
do this
elsif y.place='pl2' then
do this
else 
do this.
end if;

私の手順では、エラーが発生しています

エラー: 'pls-00364: ループ インデックス変数 'y' の使用が無効です'。

なにか提案を?

4

1 に答える 1

1

yループ内でインデックス値を使用しています。

このコードSQLFiddleのようなもの機能するはずですが、少なくとも私にとっては機能します。

DECLARE
  CURSOR cur(param_1 number,param_2 varchar2) IS
     SELECT place, name, value FROM product;

  auxCur cur%ROWTYPE;

BEGIN
  FOR y IN cur(1,'2') LOOP
    IF auxCur.place = 'pl1' THEN
        dbms_output.put_line('1');
      ELSIF auxCur.place = 'pl2' THEN
        dbms_output.put_line('2');
      ELSE
        dbms_output.put_line('3');
    END IF;
  END LOOP;
END;
于 2012-08-22T07:48:24.513 に答える