Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ? / 13 сообщений из 13, страница 1 из 1
24.05.2014, 22:55:48
    #38651147
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
hi all

LI-T6.3.0.31143
Недавно была реализована классная фича: http://tracker.firebirdsql.org/browse/CORE-4403 - позволяющая избавиться от деклараций переменных, в которые приходилось запихивать результаты выборок через into.
Вопрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
execute block as
  declare v_x type of column t1.x;
begin
  for
    select id, x from t1 as cursor c1
  do begin
    v_x = c1.x;
--    for select id, x from t2 where x=c1.x as cursor c2 -- "column unknown C1.X"
--    do begin end
    for select id, x from t2 where x=:v_x as cursor c2 -- OK
    do begin end
  end
end

- как в этом коде сделать так, чтобы закомментаренный текст заработал ? Т.е. как сослаться на c1.x из другого курсора ?
...
Рейтинг: 0 / 0
24.05.2014, 23:04:29
    #38651152
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Таблоидкак сослаться на c1.x из другого курсора ?
Двоеточку перед ним поставить не пробовал?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.05.2014, 23:22:23
    #38651163
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Dimitry Sibiryakov,

пробовал, ес-но: та же швабра
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
execute block as
begin
  for
    select id, x from t1 as cursor c1
  do begin
    for select id, x from t2 where x = :c1.x as cursor c2
    do begin end
  end
end

Код: plaintext
1.
2.
3.
4.
5.
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
C1.X.
At line 13, column 1.
...
Рейтинг: 0 / 0
24.05.2014, 23:26:54
    #38651164
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Таблоид,

должно работать. Напиши комментом в тот тикет, авось Адриано поправит.
...
Рейтинг: 0 / 0
24.05.2014, 23:27:53
    #38651165
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Таблоидта же швабра
По-моему, надо писать трекеру, пусть допиливают. А то фича хорошая, а пользоваться толком
не получится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.05.2014, 00:10:18
    #38651187
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Написал.

0xFF: совсем классно было бы вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
execute block as
  declare var_01 int;
begin
  var_01 = . . .;  
  for 
    select id, f01, f02, <some_complex_expr> as f03, :var_01 as v01, 12345 as k01 
    from T join T2 on . . . where . . .
    as cursor c1
    do suspend c1;
end

- т.е. убрать к ЧМ 'returns (. . .)', пущай компилятор генерит нужный BLR при наличии 'suspend <cursor_name>'.
...
Рейтинг: 0 / 0
25.05.2014, 10:57:21
    #38651274
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Таблоид,

самое интересное что вот так работает

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
execute block 
returns (i int, j int)
as
begin
  for select code_departure
      from departure
      as cursor c
  do
  begin
    for select code_breed
        from breed
        where code_departure = :c.code_departure
      --  as cursor c1
        into :j
    do
    begin
      i = c.code_departure;
     -- j = c1.code_breed;
      suspend;
    end
  end
end
...
Рейтинг: 0 / 0
25.05.2014, 11:01:14
    #38651276
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Таблоид- т.е. убрать к ЧМ 'returns (. . .)', пущай компилятор генерит нужный BLR при наличии 'suspend <cursor_name>'.

не согласен. А что если ты несколько разных курсоров так вернёшь. returns выкидывать нельзя. Можно конечно сделать что то типа type of cursor.... но это возможно только для ранее объявленного курсора, а потому в топку.
...
Рейтинг: 0 / 0
25.05.2014, 11:24:49
    #38651280
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Симонов Денисне согласен. А что если ты несколько разных курсоров так вернёшь.Компилятор разве не увидит, что я пытаюсь возвращать кортежи с разным перечнем полей или их типами ?
...
Рейтинг: 0 / 0
25.05.2014, 11:55:21
    #38651291
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Таблоид,

одна из положительных черт это как раз то что выходной результат заранее описывается. Упростить это конечно можно. но делать там придётся гораздо больше. Необходимо сделать что-то типа ROWTYPE.
...
Рейтинг: 0 / 0
25.05.2014, 20:54:23
    #38651494
Морской десант
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Таблоидhi all

LI-T6.3.0.31143
Недавно была реализована классная фича: http://tracker.firebirdsql.org/browse/CORE-4403 ...



Это как понимать? Уже бета?
...
Рейтинг: 0 / 0
25.05.2014, 21:05:56
    #38651496
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
это означает, что войдёт в 1 бету когда она выйдет. А в снапшотах уже есть
...
Рейтинг: 0 / 0
25.05.2014, 21:07:47
    #38651497
Морской десант
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ?
Симонов Денис,

а-а-а.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как во "внутреннем" for-select'e ссылаться на курсорные поля "внешнего" ? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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