что такое объект курсора в PL / SQL - PullRequest
1 голос
/ 24 декабря 2010

Я понимаю концепцию переменных PL / SQL, но мне не удается представить себе ясную картину объектов курсора в PL / SQL.

Я где-то прочитал приведенный ниже текст и чувствую, что не могучтобы понять концепцию объектов курсора.

"Если переменная курсора еще не была назначена ни одному объекту курсора, оператор OPEN FOR неявно создает объект для переменной.
Если вВо время ОТКРЫТИЯ переменная курсора уже указывает на объект курсора, тогда ОТКРЫТО ДЛЯ не создает новый объект. Вместо этого он повторно использует существующий объект и присоединяет новый запрос к этому объекту. Объект курсора поддерживается отдельно от курсораили запрос сам. "

пожалуйста, объясните мне, как это работает внутри .....

Ответы [ 2 ]

0 голосов
/ 24 декабря 2010

Насколько я понимаю, курсор похож на указатель, который указывает на строку в наборе результатов.В другом языке программирования это как перечислитель.Перечислитель - это объект, который помогает пройти через набор элементов.

Например:

declare
  cursor cur is select * from someTable;

begin
  open cur;
  loop
    fetch cur into record;
    exit when cur%notfound;
    dbms_output.put_line('Col1: ' || record.col1 || ', Col2: ' || record.col2);
  end loop;
end;

будет похоже на это в C #:

    string[] collection = new string[]{"A", "B", "C"};
    var enumerator = collection.GetEnumerator();
    while(enumerator.MoveNext())
    {
        Console.WriteLine("current item:" + enumerator.Current);
    }

Примечаниеиспользование курсора для получения данных записи аналогично использованию перечислителя для получения данных.

Надеюсь, это поможет вам.

0 голосов
/ 24 декабря 2010

Вы можете рассматривать его как указатель, который используется в языке программирования C (если вы когда-либо учились), он указывает на каждую строку данных, извлеченных из оператора SQL.Переместите курсор на следующую строку, чтобы прочитать следующую строку.

Ссылка: http://www.cse.unsw.edu.au/~cs9311/10s2/lectures/week04/PL_SQL.pdf Это примечания к лекции, которые я использовал для изучения PL / SQL

...