Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 12.10.2018, 01:17   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 371
Репутация: 16
По умолчанию Firebird - Внутренняя процедура, условие с условием для цикла

Есть внутрення рабочая процедура

Доброе время сутк форумчане,

Есть внутренняя процедура

Код:

create or alter procedure SP_SEL_COST_FOR_DEVICE (
    IN_DEPARTMENT_ID_EXECUTE integer,
    IN_PROPOSAL_ID integer)
returns (
    OUT_DEVICES_ID integer,
    OUT_COUNT_HOUR numeric(15,2))
as
declare variable VAR_COUNT_HOUR numeric(15,2);
declare variable VAR_SORT_WORK_ID integer;
declare variable VAR_DEVICES_CL_ID integer;
declare variable VAR_DEPARTMENT_ID_EXECUTE integer;
declare variable VAR_DEVICE_ID integer;
begin
  for
    select d.SORT_WORK_ID, dp.DEVICE_ID, dp.DEPARTMENT_ID_EXECUTE, dp.DEVICES_CL_ID
      from DISTRIBUTION_PROPOSAL dp
      join DEVICES d on d.ID = dp.DEVICE_ID
        where dp.PROPOSAL_ID = :IN_PROPOSAL_ID
          into :VAR_SORT_WORK_ID, :VAR_DEVICE_ID, :VAR_DEPARTMENT_ID_EXECUTE, :VAR_DEVICES_CL_ID do
  begin
….

Рабочая, все нормально.

Вопрос:
Можно каким-нибудь образом сделать, если в передаче «IN_DEPARTMENT_ID_EXECUTE» не пустое значение, то блок «where» (в for), выглядел бы так:

Код:

where dp.PROPOSAL_ID = :IN_PROPOSAL_ID and DEPARTMENT_ID_EXECUTE = : IN_DEPARTMENT_ID_EXECUTE

Очень не хотелось писать 2 одинаковых цикла.
KBO вне форума   Ответить с цитированием
Старый 12.10.2018, 08:45   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,070
Репутация: 6385
По умолчанию

Код:

where dp.PROPOSAL_ID = :IN_PROPOSAL_ID and
(:VAR_DEPARTMENT_ID_EXECUTE is null or DEPARTMENT_ID_EXECUTE = :IN_DEPARTMENT_ID_EXECUTE)

__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
условие для цикла 1101ь Помощь студентам 4 21.09.2018 13:08
ОПЕРАТОРЫ ЦИКЛА С УСЛОВИЕМ Pandemona Паскаль 1 21.12.2010 17:37
Хранимая процедура для Firebird Lait1989 БД в Delphi 1 15.05.2010 11:02
Особое условие для цикла Vikelf Помощь студентам 2 29.05.2009 08:01
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 15:10


13:49.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru