Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2014, 15:30   #1
Spark_T
Новичок
Джуниор
 
Регистрация: 13.12.2014
Сообщений: 5
По умолчанию Работа с хранимыми процедурами

Всем добрый день! Не знаю как преобразовать триггер в хранимую процедуру. Мне необходимо создать процедуру с использованием нескольких переменных(используя into), при этом она не должна ничего возвращать.
Вот сам код триггера:
Код:
AS
BEGIN
  IF (NOT EXISTS(SELECT 1
               FROM PRODAJI, DOP_TOVAR
              WHERE PRODAJI.ID_PRODAJA=NEW.ID_PRODAJA
                AND DOP_TOVAR.KOD_TOVARA=NEW.KOD_TOVARA
                AND PRODAJI.ID_AVTO=DOP_TOVAR.ID_AVTO)
     ) THEN
    exception nevernaya_komplektaciya;
END
Надеюсь на вашу помощь, заранее спасибо!
Spark_T вне форума Ответить с цитированием
Старый 13.12.2014, 16:35   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Мне необходимо создать процедуру с использованием нескольких переменных(используя into), при этом она не должна ничего возвращать.
Непонятно что вы хотите .
Цитата:
при этом она не должна ничего возвращать
SELECT что то будет возвращать . показал бы структура ваши БД и поставил вопрос боле подробно
xxbesoxx вне форума Ответить с цитированием
Старый 13.12.2014, 17:08   #3
Spark_T
Новичок
Джуниор
 
Регистрация: 13.12.2014
Сообщений: 5
По умолчанию

Если продавец хочет дополнительно продать товар(запчасть) к авто, то в таблице PRODAJA_DOP_TOVARA проверяется соответствует ли оно этому авто. В таблице DOP_TOVAR по умолчанию указаны какая запчасть к какому авто подойдет. Процедура должна быть тем же "триггером", только с использованием локальных переменных, а также могла вызываться в другом триггере.
Работаю в IB Expert, Firebird версии 2.5.
Схема данных на Access:
BASE.jpg

Как то так, думаю так нагляднее

Последний раз редактировалось Stilet; 13.12.2014 в 18:07.
Spark_T вне форума Ответить с цитированием
Старый 13.12.2014, 18:09   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при этом она не должна ничего возвращать.
Я не очень понял в чем тогда смысл такой процедуры? В выбросе исключения в качестве ответа? Может стоит сделать функцию хотябы скалярную, чтоб возвращала код ошибки? Просто как-то на одних эксцепшинах действовать ИМХО костыльно.
Цитата:
Если продавец хочет дополнительно продать товар(запчасть) к авто
Кстати, а в чем проблема то? Продавей выберет авто и получит список только его запчастей. Зачем делать проверку на совместимость с автомобилем?
Или по другому: Продавец выбирает запчасть и получает список авто, к которому она применима - опять проверка становится лишней.
I'm learning to live...

Последний раз редактировалось Stilet; 13.12.2014 в 18:18.
Stilet вне форума Ответить с цитированием
Старый 13.12.2014, 18:14   #5
Spark_T
Новичок
Джуниор
 
Регистрация: 13.12.2014
Сообщений: 5
По умолчанию

Да, должно выводить исключение) Я новичок в этом деле, только начинаю осваиваться, поэтому мне дали такое задание, а я и с этим никак не могу справиться. Надеюсь на вашу помощь.
Spark_T вне форума Ответить с цитированием
Старый 13.12.2014, 18:20   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну во-первых: Я бы так продажу не организовывал. А точнее я бы повыдергивал за такое ПО руки, но хозяин-барин, и мне все равно.
Во-вторых: Ты говоришь про какие-то две переменные. Что они такое и для чего должны служить?.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.12.2014, 18:29   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Вам понятно совет из Stilet или еще не переварили в голову ?
xxbesoxx вне форума Ответить с цитированием
Старый 13.12.2014, 23:15   #8
Spark_T
Новичок
Джуниор
 
Регистрация: 13.12.2014
Сообщений: 5
По умолчанию

Две переменные, то есть куда заносятся новые значения кода товара и айли продажи
Spark_T вне форума Ответить с цитированием
Старый 14.12.2014, 13:35   #9
Spark_T
Новичок
Джуниор
 
Регистрация: 13.12.2014
Сообщений: 5
По умолчанию

Не совсем понятно, однако параллельно решил попробовать написать еще одну процедуру, которая возвращает марки автомобилей, произведенных в заданной стране. Вроде все пишу правильно, однако он отказывается компилироваться (IB Expert, Firebird 2.5)

Сам код:
Код:
create or alter procedure CARS (
    CARS varchar(50))
as
begin
select avto.nazvanie_auto from avto, strana
WHERE strana.nazvanie_strani='Япония' and avto.id_strana=strana.id_strana
  suspend;
end^
Spark_T вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с процедурами Neo_AG Помощь студентам 9 26.05.2012 11:52
Работа с процедурами. Паскаль Женька Good Помощь студентам 3 15.12.2011 22:12
Работа с хранимыми процедурами в silverlight barambembes WPF, UWP, WinRT, XAML 0 10.08.2011 17:08
работа с процедурами nex 9119 Помощь студентам 2 24.01.2011 18:38
работа с процедурами и функциями. Tanushka5606 Паскаль, Turbo Pascal, PascalABC.NET 2 06.05.2009 23:01