0

SQL Developer を使用して pl/sql にオブジェクトを作成しようとしています。コツをつかむために基本をいじっているだけです。エラーが発生し続けます

変数 'I' への参照が無効です

SET serveroutput ON


create or replace type conditions as object
(var_name varcher (100) ,
extract_method varchar(100),
default_value varchar (100),
idList varchar (100));


   DECLARE
condition conditions;
TYPE namesarray IS VARRAY(1) OF conditions; 
names namesarray := namesarray();--figure out why this is.
BEGIN
 condition := conditions('a', 'b', 'c', 'd');
 names.extend;
  names(names.last):= condition;
 FOR i IN names.FIRST .. names.LAST
  LOOP
     DBMS_OUTPUT.PUT_line(i.idList);
    END LOOP;
end;

どうすればこれを機能させることができますか?

4

2 に答える 2

1

完全に示されているように、VARRAY の別の代替手段が存在する可能性があります。ここでも TABLE タイプを使用できます。すべてのコレクション タイプの違いは、https: //community.oracle.com/thread/457834?start=0&tstart=0 で説明されています。

お役に立てれば。

SET serveroutput ON;
DECLARE
TYPE namesarray
IS
  TABLE OF conditions;
  names namesarray := namesarray() ;--NULL Constructor
BEGIN
  names:=namesarray(conditions('a', 'b', 'c', 'd'));
  FOR i IN names.FIRST .. names.LAST
  LOOP
    DBMS_OUTPUT.PUT_line(names(i).idList); -- use I as the index for your collection
  END LOOP;
END;
于 2016-03-30T06:39:56.290 に答える