На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Выполнение ХП с параметром "out" , FireBird 1.5
    Привет всем! Видимо совсем заработался... Как средствами SQL (из хранимой процедуры) выполнить другую процедуру, возвращающую один параметр out ?
    В случае простой ХП (ничего не возвращающей) это будет
    ExpandedWrap disabled
      execute procedure proc1(par1, par2);

    Но если proc1 возвращает хоть один параметр, то так уже не покатит.
    Пробовал так
    ExpandedWrap disabled
      execute procedure proc1(par1, par2, out par3);
    и
    ExpandedWrap disabled
      par3 = execute procedure proc1(par1, par2);
    все неправильно...
    А как собственно надо?

    Добавлено
    все, вопрос решен. нужен просто for select... Это я сегодня не варю.
      Вообще говоря, можно и
      ExpandedWrap disabled
        execute procedure proc1(:par1, :par2)
        returning_values :out;

      Это если только один suspend или его нет
        не знал про такое. Спасибо!
          а чем стандартный select out from prco1(:par1, :par1) into :out_value не устроил??
            дык я так в итоге и сделал, пока Romkin не показал вариант с returning_values

            Добавлено
            куча заморочек с синтаксисом получается. у каждой СУБД свои...
              Вообще говоря, как правило, вариант с suspend в процедуре и вызовом ее через select предпочтительнее:
              Во-первых, легко вызывать из обычного TxxQuery, во-вторых, вариант с returning_values требует приема всех выходных параметров, а при select можно брать только то, что нужно.
              С другой стороны, вызывая процедуру через execute, вы гарантированно не получите исключения "Multiple rows in singleton select", первый же suspend сработает как exit.
              В общем-то в этом вся разница.
              А синтаксис и средства у каждой СУБД действительно свои.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0304 ]   [ 15 queries used ]   [ Generated: 20.09.24, 16:50 GMT ]