SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.12.2010 22:27:10

Random4Fun
Участник
Зарегистрирован: 05.10.2010
Сообщений: 7

Синтаксис процедуры

Как правильно написать процедуру? Процедура должна вставлять данные в 3 разные таблицы.

create procedure proc1()
begin
insert into driver values (1,'Хусаинов', 'Тагир', 'Тагирович', 10);
insert into route values (1, 'Оренбург-Бузулук', 50, 1, 20000);
insert into work_done values (1, '2010:11:11', '2010-11-12', 5000, 1, 1);
end;



пробывал ставить запятые вместо точки с запятой после инсертов, не помогло.

Отредактированно Random4Fun (07.12.2010 22:30:41)

Неактивен

 

#2 07.12.2010 22:34:38

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Синтаксис процедуры

delimiter не указали
см примеры в http://dev.mysql.com/doc/refman/5.1/en/ … edure.html

Неактивен

 

#3 07.12.2010 22:49:02

Random4Fun
Участник
Зарегистрирован: 05.10.2010
Сообщений: 7

Re: Синтаксис процедуры

Спасибо, все заработало smile

Неактивен

 

#4 10.12.2010 22:15:35

Random4Fun
Участник
Зарегистрирован: 05.10.2010
Сообщений: 7

Re: Синтаксис процедуры

создаю представление, объединяющее поля из 2 таблиц, которые связаны через 3ю внешними ключами:

create view v_pay (surname, pay)
 as select (surname, sum(pay) from driver, route, work_done
 where (id_driver=code_driver) and (id_route=code_route)
 group by driver);


SQL пишет, что ошибка в синтаксисе перед from, как написать правильно?

Неактивен

 

#5 10.12.2010 22:19:24

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Синтаксис процедуры

Неактивен

 

#6 10.12.2010 23:40:17

Arzamas
Участник
Зарегистрирован: 07.12.2010
Сообщений: 16

Re: Синтаксис процедуры

vasya написал:

А зачем у вас скобка после select ?

И соответственно в конце тела select, перед точкой с запятой, закрывающая скобка не нужна.

Неактивен

 

#7 15.12.2010 22:22:05

Random4Fun
Участник
Зарегистрирован: 05.10.2010
Сообщений: 7

Re: Синтаксис процедуры

Задание:
1.    Изучить команды по работе с представлениями. Создайте представление, объединяющее все таблицы,  согласно вашему варианту, одно из полей должно содержать результат агрегатной функции. Измените структуру одной из ваших таблиц, используя параметры CASCADE и RESTRICT. Проверьте как при этом изменилось ваше представление.

я создал представление

create view v_pay (surname, pay)
 as select surname, sum(pay) from driver, route, work_done
 where (id_driver=code_driver) and (id_route=code_route)
 group by surname;


после изменения структуры таблицы с restrict или cascade при select'e выдает ошибку View 'freight.v_pay' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them SQL1.sql 3 1

alter table driver drop column surname restrict;
select * from v_pay;


alter table driver drop column surname cascade;
select * from v_pay;


как правильно пользоваться restrict и cascade?

Неактивен

 

#8 15.12.2010 22:39:17

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Синтаксис процедуры

Странно, что

alter table driver drop column surname restrict;
не выдает ошибку, потому как синтаксис такого не предполагает http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

restrict и cascade это из серии внешних ключей, см FAQ #4

Кстати, а задания у вас именно по MySQL? Или по SQL?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson