powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / with execute block
13 сообщений из 38, страница 2 из 2
with execute block
    #38944167
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

ты бы хоть название джойна скопировал, а то народ путаешь. Правильное название LATERAL JOIN.

LATERAL в трешке нет, но зато есть подпроцедуры

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
execute block
returns (
  name varchar(50),
  chestaround numeric(15, 3),
  wristaround numeric(15, 3))
as
  declare procedure subproc(code_horse int)
  returns (
    chestaround numeric(15, 3),
    wristaround numeric(15, 3))
  as
  begin
    select chestaround, wristaround
    from measure
    where code_horse = :code_horse
    order by age desc
    fetch first row only
    into chestaround, wristaround;
    suspend;
  end
begin
  for select
        horse.name,
        m.chestaround,
        m.wristaround
      from horse
      left join subproc(horse.code_horse) m on 1=1
  order by horse.name
  into name, chestaround, wristaround
  do suspend;
end
...
Рейтинг: 0 / 0
with execute block
    #38944179
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой, дико извиняюсь, помню что что-то по бокам :)
...
Рейтинг: 0 / 0
with execute block
    #38944185
Объясните пожалуйста, что я делаю не так?
Создал временную таблицу. Select по rdb$relations её отображает. Но при компиляции ХП ругается, что такой таблицы нет. Даже если эту таблицу надо делать каждый раз при подключении пользователя (хотя в доке вроде об этом ни слова, и нет внятной информации как проверить её наличие), компиляция-то всё-равно не идет. Или предлагается заворачивать в строки и использовать execute statment? Но это тоже не логично.
...
Рейтинг: 0 / 0
with execute block
    #38944187
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDorin Marcoci,
LATERAL в трешке нет, но зато есть подпроцедуры

так идея была _без_ процедур, нежели с под-процедурами.

хотя под-процедуры тоже отличная штука, если места где нужно агрегировать а потом еще чего-то делать...
...
Рейтинг: 0 / 0
with execute block
    #38944189
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

для этого есть оконные функции SUM(field) OVER(...)
...
Рейтинг: 0 / 0
with execute block
    #38944191
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий Соболев

выкладывай скрипт как и что создаёшь. Ты походу динамически её решил создать. Так и не почитал документацию.
http://www.firebirdsql.org/file/documentation/reference_manuals/Firebird_Language_Reference_RUS.pdf
...
Рейтинг: 0 / 0
with execute block
    #38944216
Симонов ДенисАртемий Соболев

выкладывай скрипт как и что создаёшь. Ты походу динамически её решил создать. Так и не почитал документацию.
http://www.firebirdsql.org/file/documentation/reference_manuals/Firebird_Language_Reference_RUS.pdf

Документацию читал, тока ту, что на ангельском. Возможно что-то некорректно перевел. Сейчас изучаю вариант по указанной вами ссылке. По существу ваших негодований могу сказать, что создаю таблицу все-таки не в ХП (об этом очень много писалось как на параллельных ветках, в этой ветке, и других ресурсах сети. Надо быть абсолютным дебилом, чтобы это проигнорировать).
Вопрос остается открытым. Создание GTT - при подключении пользователя. А проверка на наличие уже имеющейся таблицы? Или в случае с GTT игнорируется факт уже существующей таблицы?

И ещё. Тут часто упоминают третью версию Firebird. Есть ли документация на эту волшебную СУБД? Хочется попробовать, и, возможно со временем, на неё перейти.
...
Рейтинг: 0 / 0
with execute block
    #38944223
Сейчас провел небольшой эксперимент:
создал GTT. Не отключаясь первым пользователем, подключился вторым пользователем, проверил - он эту таблицу не видит. При попытке создать такую же таблицу ругань в ответ.

Код: plaintext
1.
2.
3.
unsuccessful metadata update.
STORE RDB$RELATION_FIELDS failed.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_15".
Problematic key value is ("RDB$FIELD_NAME" = 'ID', "RDB$RELATION_NAME" = 'COMMON_RESUME_TABLE').
...
Рейтинг: 0 / 0
with execute block
    #38944230
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий СоболевДокументацию читал, тока ту, что на ангельском. Возможно что-то некорректно перевел. Сейчас изучаю вариант по указанной вами ссылке. По существу ваших негодований могу сказать, что создаю таблицу все-таки не в ХП (об этом очень много писалось как на параллельных ветках, в этой ветке, и других ресурсах сети. Надо быть абсолютным дебилом, чтобы это проигнорировать).
Вопрос остается открытым. Создание GTT - при подключении пользователя. А проверка на наличие уже имеющейся таблицы? Или в случае с GTT игнорируется факт уже существующей таблицы?

В английской версии написано почти тоже самое что и в русской. Разница лишь в том что пока нет англоязычного варианта который объединил бы весь синтаксис SQL. Есть только LangRef от IB 6 и LangRef Update в котором описаны изменения относительно IB6.

По сути вопроса. Не надо создавать GTT каждый раз при подключении. Надо создать её 1 раз (вообще) и потом использовать как и любую другую таблицу.


Артемий СоболевИ ещё. Тут часто упоминают третью версию Firebird. Есть ли документация на эту волшебную СУБД? Хочется попробовать, и, возможно со временем, на неё перейти.

Есть ReleaseNotes .
Есть так же документация и на русском аналог того что сделано на 2.5. Но поскольку LangRef Update для трешки ещё нет, да и сама она находится в Beta статусе, то эта дока не совсем полная. Возможно множество ошибок и т.д. Впрочем я могу выложить на неё ссылку, если kdv с Ковязиным не будут возражать.
...
Рейтинг: 0 / 0
with execute block
    #38944237
Симонов ДенисЕсть ReleaseNotes .

Этого на данном этапе достаточно, спасибо. Просто иметь представление об этой СУБД.


Один раз создать и потом пользоваться GTT пока не получается. Создаю GTT из под SYSDBA, отключаюсь, подключаюсь снова и этой таблицы нет. И как писал выше, если не отключаюсь одним ползователем, создавшим эту таблицу и подключаюсь другим, то второй не видит её. И создать не может.
...
Рейтинг: 0 / 0
with execute block
    #38944253
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий СоболевОдин раз создать и потом пользоваться GTT пока не получается. Создаю GTT из под SYSDBA, отключаюсь, подключаюсь снова и этой таблицы нет. И как писал выше, если не отключаюсь одним ползователем, создавшим эту таблицу и подключаюсь другим, то второй не видит её. И создать не может.ВСЕ (в том числе ГТТ) метаданные надо создавать монопольно, после коммита и дисконнекта этого коннекта можно поднимать коннекты работающие с данными, тогда все будет работать ГАРАНТИРОВАННО.
...
Рейтинг: 0 / 0
with execute block
    #38944255
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий Соболев,

не ври. Commit делаешь?
...
Рейтинг: 0 / 0
with execute block
    #38944265
Симонов ДенисАртемий Соболев,

не ври. Commit делаешь?

Вот жеж!

Всё-таки устал, надо в отпуск. Спасибо всем, принявшим участие в этой ветке. Стыд и позор на мою голову, что не догадался о таком элементарном действе. Теперь всё как заявлено.

Отдельное спасибо Денису, за терпение и упорность тыканья меня носом в... а так-же за ссылку на полезный документ. Даже два.

У всех прошу прощения за отнятое у вас время.

Мне реально стыдно...
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / with execute block
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]