Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по курсорам / 2 сообщений из 2, страница 1 из 1
27.07.2017, 17:17
    #39496228
Wolfyteze
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по курсорам
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SET SERVEROUTPUT ON

DECLARE
    v_num   NUMBER(3) := &n;
    v_sal   employees.salary%TYPE;
    v_nak   employees.salary%TYPE;
    CURSOR c_emp_cursor IS
        SELECT
            salary
        FROM
            employees
        GROUP BY
            salary
        ORDER BY 1 DESC;
BEGIN
    OPEN c_emp_cursor; -- открываем курсор
    FETCH c_emp_cursor INTO v_sal; -- извлекаем одну строку из курсора
    WHILE c_emp_cursor%rowcount <= v_num  -- задаем условие выхода:   
-- 1) пока число строк в таблице меньше равно заданному числу (v_num)
 AND
 c_emp_cursor%found LOOP -- 2) Есть строки для вставки 
        INSERT INTO top_salaries ( salary ) VALUES ( v_sal );

--        dbms_output.put_line(v_sal);
        FETCH c_emp_cursor INTO v_sal; -- опять обращаемся к курсору?!
    END LOOP;

    CLOSE c_emp_cursor;
END;
/

SELECT
    salary
FROM
    top_salaries;


Имеется код выше.
Объясните по русски, зачем второй раз обращаться к извлечению курсора.
...
Рейтинг: 0 / 0
27.07.2017, 17:24
    #39496233
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по курсорам
Wolfyteze,

За второй и последующими строками.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по курсорам / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]