Хелпикс

Главная

Контакты

Случайная статья





Курсоры в MySQL. Лабораторная работа №6



Курсоры в MySQL

Лабораторная работа №6

1. Создать или открыть ранее сохраненную базу данных «university» в программе-дизайнере MySQL Workbench.

2. В базе данных «university» создать таблицу «users» с полями:

· id тип int – ключ (PK);

· name тип varchar (45), не нулевое (NN);

· d_id тип int;

3. Заполнить таблицу «users» произвольными записями - 5 строк.

4. В базе данных «university» создать таблицу «hobbies» с полями:

· id тип int – ключ (PK), счетчик (AI);

· hobby тип varchar(45), не нулевое (NN);

· u_id тип int.

5. Заполнить таблицу «hobbies» произвольными записями - 7 строк. Поле «hobby» должно содержать текстовое название хобби студента, а поле «u_id» число – идентификатор студента из таблицы «users». Каждый студент может иметь несколько различных хобби.

6. Создать хранимую процедуру с именем showHobbies (раздел Routines в MySQL Workbech).

7. Заполнить тело процедуры согласно образцу:

DELIMITER //

CREATE PROCEDURE `university`.`showHobbies` (OUT printstr VARCHAR(500))

BEGIN

DECLARE done BOOLEAN DEFAULT FALSE;

DECLARE cur_id, cur_u_id INT;

DECLARE cur_name, cur_hobby CHAR(45);

DECLARE outstr VARCHAR(500) DEFAULT '\n';

DECLARE workstr VARCHAR(500) DEFAULT '';

DECLARE curusers CURSOR FOR SELECT id, name FROM users;

DECLARE curhobbies CURSOR FOR SELECT u_id, hobby FROM hobbies;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

OPEN curusers;

USERSLOOP: LOOP

FETCH curusers INTO cur_id, cur_name;

IF done THEN

LEAVE USERSLOOP;

END IF;

SELECT CONCAT(CONCAT('The hobby list ', cur_name), ' is ') INTO workstr;

OPEN curhobbies;

FETCH curhobbies INTO cur_u_id, cur_hobby;

WHILE NOT done DO

IF cur_id = cur_u_id THEN

SELECT CONCAT(workstr, cur_hobby) INTO workstr;

SELECT CONCAT(workstr, ', ') INTO workstr;

END IF;

FETCH curhobbies INTO cur_u_id, cur_hobby;

END WHILE;

SET done := FALSE;

CLOSE curhobbies;

SET outstr := CONCAT(outstr, CONCAT(workstr, '\n'));

END LOOP USERSLOOP;

CLOSE curusers;

SET printstr := outstr;

END//

8. Сохранить созданную в программе-дизайнере схему базы данных на локальный компьютер. Запустить генерацию базы данных на сервере MySQL. Подключиться к базе данных MySQL через терминал (mysql –u root –p).

9. Активизировать базу данных «university» (use). В командной строке выполнить следующую последовательность команд:

· CALL showHobbies(@list);

· SELECT @list; (результаты вывода записать в черновик).



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.