a. Объявите две переменные типа TABLEPL/SQL (ENAME_TABLE и SAL_TABLE) для временною хранения фамилий и окладов.
b. По мере выборки каждой фамилии и оклада из таблицы ЕМР сохраняйте эти значения в переменных тина TABLEPL/SQL.
c. Выполните вставку значений из переменных типа TABLE в таблицу TOP_DOGS.
d. Очистите таблицу TOP_DOGS и проверьте результаты практического занятия.
Please enter the employee number: 7934 |
|
PL/SQL procedure successfully completed. |
|
NAME |
SALARY |
MILLER |
1300 |
Please enter the employee number: 7876 |
|
PL/SQL procedure successfully completed. |
|
NAME |
SALARY |
ADAMS |
1100 |
Практическое занятие 20
На этом занятии вы используете свои знания о курсорах для обработки нескольких строк одной таблицы и заполнения другой таблицы результатами выборки с помощью цикла FOR с курсором.
1. Создайте блок PL/SQL, определяющий служащих с самыми высокими окладами.
a. С помощью параметра подстановки SQL*Plus получите от пользователячисло n.
b. В цикле выберите из таблицы ЕМР фамилии и оклады nсамыхвысокооплачиваемых служащих.
c. Сохраните фамилии и оклады в таблице TOP_DOGS.
d. Исходите из того, что двое служащих не могут иметь одинаковые оклады.
e. Проверьте некоторые особые случаи - в частности, когда n = 0 или превышаетколичество служащих в таблице ЕМР. Очищайте таблицу TOP_DOGS послекаждой проверки.
Please enter the number of top money makers: 5 |
|
NAME |
SALARY |
KING |
5000 |
FORD |
3000 |
SCOTT |
3000 |
JONES |
2975 |
BLAKE |
2850 |
2. Рассмотрите случай, когда двое служащих могут иметь одинаковые оклады. Если всписок попадает один человек, должны быть перечислены и все остальные служащие стаким же окладом.
a. Если, например, пользователь вводит для n значение 2, в выходной списокдолжны попасть служащие Кинг, Форд и Скотт. (Эти служащие имеют второй повеличине оклад.)
b. Если пользователь вводит значение 3, в выходной список попадают служащиеКинг, Форд, Скотт и Джоунз.
c. Удалите все строки из таблицы TOP_DOGS и проверьте результатыупражнений.
Please enter the number of top money makers: 2 |
|
NAME |
SALARY |
KING |
5000 |
FORD |
3000 |
SCOTT |
3000 |
Please enter the number of top money makers: 3 |
|
NAME |
SALARY |
KING |
5000 |
FORD |
3000 |
SCOTT |
3000 |
JONES |
2975 |
Практическое занятие 21
На этом практическом занятии вы будете обрабатывать строки нескольких таблиц, используя свои знания о курсорах с параметрами.
1. Напишите запрос для выборки всех отделов и служащих каждого отдела. Поместите результаты в таблицу MESSAGES. Используйте курсор для выборки номера отдела и передайте номер отдела в курсор для выборки служащих этого отдела.
RESULTS |
KING - Department 10 |
CLARK - Department 10 |
MILLER - Department 10 |
JONES - Department 20 |
FORD - Department 20 |
SMITH - Department 20 |
SCOTT - Department 20 |
ADAMS - Department 20 |
BLAKE - Department 30 |
MARTIN - Department 30 |
ALLEN - Department 30 |
TURNER- - Department 30 |
JAMES - Department 30 |
WARD - Department 30 |
14 rows selected. |
2. Измените файл p18q5.sqlтак, чтобы при обработке курсора использовались функциональные возможности предложений FORUPDATE и WHERE CURRENTOF.
EMPNO |
SAL |
STARS |
8000 |
||
7900 |
950 |
********** |
7844 |
1500 |
*************** |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.