Коллекции

Умп
Дата: 11.08.2005 18:32:02
Изучая Оракл, добрался до коллекций
Имею вот такой код
declare
  cursor myCur IS
         select ID_VZNOSI, ID_FIRM, ID_ACCOUNT, DATE_SP, SUMA from VZNOSI;
         
  type TMyRecord IS RECORD
  (
   myData myCur%ROWTYPE,
   Note varchar2(500) 
  );
  
  MyRecord TMyRecord;
  
  Type TMyCollection IS TABLE OF TMyRecord;
  MyCollection  TMyCollection := TMyCollection();
  
  i integer;
BEGIN
     i:=1;
     OPEN myCur;
     loop
         FETCH myCur INTO MyRecord.myData;
         EXIT WHEN myCur%NOTFOUND;
         if (MyRecord.myData.SUMA > 200) then
            MyRecord.Note := 'Ну не фига себе';
         ELSE
            MyRecord.Note := 'Лохи';    
         END IF ;  
         
         MyColelction.EXTEND;
         MyCollection(i) := MyRecord;
         i := i+1;
         DBMS_OUTPUT.Put_Line(MyRecord.myData.ID_FIRM||'----'||MyRecord.myData.SUMA||'-----'||MyRecord.Note);
     END LOOP;
     Close myCur;    
END;

При компиляции, выдается ошибка, что для коллекци не определено EXTEND;
MyColelction.EXTEND;


Если это убрать, то выдает следующее ORA-06512 на строке MyCollection(i) := MyRecord;


Что я не так делаю своими кривыми руками и как мне исправить кривость рук?

Людей с ответами, типа читай хелп и доки, рассматриваю, как людей не понимающих в данном вопросе.
Denis Popov
Дата: 11.08.2005 18:35:57
--MyColelction.EXTEND;
  MyCollection.EXTEND;
VasyakinM
Дата: 11.08.2005 18:39:05
Если я не ошибаюсь, то EXTEND раширяет NESTED TABLE или говоря русским языком SQL коллекции, которые ты создал
CREATE TYPE TTT AS TABLE OF T;

В твоем случае если я правильно понимаю не нужен EXTEND и не нужна инициализация. Хотя честно говоря надо лесть в свои старые коды чтобы точно тебе ответить.

З.Ы. Неплохо было бы увидеть версию Oracle
Умп
Дата: 11.08.2005 18:42:06
VasyakinM


З.Ы. Неплохо было бы увидеть версию Oracle


10
SY
Дата: 11.08.2005 18:42:41
VasyakinM
Если я не ошибаюсь, то EXTEND раширяет NESTED TABLE или говоря русским языком SQL коллекции, которые ты создал
CREATE TYPE TTT AS TABLE OF T;

В твоем случае если я правильно понимаю не нужен EXTEND и не нужна инициализация. Хотя честно говоря надо лесть в свои старые коды чтобы точно тебе ответить.


Extend is not needed for sparse (index by) tables. Умп created a NESTED table of RECORDs. So all Умп needs is a correct spelling, as Denis Popov already noted.

SY.
VasyakinM
Дата: 11.08.2005 18:50:48
To SY

Полностью согласен :)) глянул в старые коды и прояснилось.
Извиняюсь за недостоверную информацию. :))
Умп
Дата: 12.08.2005 12:13:19
Люди ну что мне делать то?
Илья Н.
Дата: 12.08.2005 12:22:32
Умп
Люди ну что мне делать то?

читай этот пост http://www.sql.ru/forum/actualthread.aspx?tid=207548#1779641
lol
Умп
Дата: 12.08.2005 12:50:45
Илья Н.
Умп
Люди ну что мне делать то?

читай этот пост http://www.sql.ru/forum/actualthread.aspx?tid=207548#1779641
lol


Умный ты спасу нет, где хоть один рабочий ответ?????
Умп
Дата: 12.08.2005 12:52:54
Умп
Илья Н.
Умп
Люди ну что мне делать то?

читай этот пост http://www.sql.ru/forum/actualthread.aspx?tid=207548#1779641
lol


Умный ты спасу нет, где хоть один рабочий ответ?????


Прошу меня простить, сразу не заметил, видно не только руки, но и глаза кривые