powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возврат списка значений из ХП
25 сообщений из 27, страница 1 из 2
Возврат списка значений из ХП
    #40013686
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Подскажите, есть ли возможность в FireBird (2.5) вернуть из ХП список значений sql-конструкцией вида:
Код: sql
1.
for select ID in (1013,1014,1015,1022,1023,1040,1041,1057,1058,1059,1060,1066,1070) do suspend


ID - единственный выходной параметр ХП

Присваивать каждое значение ID и делать suspend можно, но хотелось бы поизящней)
Спасибо.
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013690
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983,

заведи себе хранимку, которая парсит строку с разделителем на значения
передаешь ей список нужных ИД строкой, - получаешь результат таблицей
что-то типа такого - 22007763
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013692
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это будет неизящный тормоз.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013699
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Это будет неизящный тормоз.
предложи лучше
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013704
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtпредложи лучше

Зачем? По мне скопипащенная строчка с присваиванием и суспендом - вполне изящна и круче
неё только справочник, но этот вариант аффтару явно не понравится своей простотой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013706
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
По мне скопипащенная строчка с присваиванием и суспендом - вполне изящна и круче
с чего ты взял, что у ТСа, всё время, будут одни и те же значения ?
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013709
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983,

List()? Тсу нужно именно id на выходе или список из id?
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013710
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtс чего ты взял, что у ТСа, всё время, будут одни и те же значения ?

Из его сообщения. Он написал, что это можно сделать присваиваниями и суспендом, значит
список фиксированный. Значит с тем же успехом его можно свалить в таблицу только на
чтение. Но он не сделал этого самоочевидного шага. Следовательно считает, что это слишком
просто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013712
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
courtс чего ты взял, что у ТСа, всё время, будут одни и те же значения ?

Из его сообщения. Он написал, что это можно сделать присваиваниями и суспендом, значит
список фиксированный. Значит с тем же успехом его можно свалить в таблицу только на
чтение. Но он не сделал этого самоочевидного шага. Следовательно считает, что это слишком
просто.Нуу, я так плохо про ТСа не думаю :)
(что он не додумался какой-то постоянный список ID загрузить в таблицу и ею и пользоваться)

имхо, он "молод/гарячь", и собирается изменять/перекомпилировать ХП каждый раз, когда нужно изменить список.
И вот это, как раз, ему и не нравится
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013713
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,
Нужно при выполнении
Код: sql
1.
select ID from sp

получать
ID 1013 1014 1015 1022 1023 1040 1041 1057 ...
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013714
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983
DarkMaster,
Нужно при выполнении
Код: sql
1.
select ID from sp


получать
ID 1013 1014 1015 1022 1023 1040 1041 1057 ...
список значений - постоянный ? или может меняться ?
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013715
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983Нужно при выполнении

select ID from sp
получать
ID
1013
1014
1015
Код: sql
1.
2.
3.
4.
5.
6.
create table sp (id integer);
insert into sp values(1013);
insert into sp values(1014);
insert into sp values(1015);
commit;
select id from sp;


В Firebird селективная процедура без параметров синтаксически неотличима от таблицы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013716
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, court,

таких списков будет много, изменятся они будет, но редко.
Мне не нравится куча "мелких" таблиц, тем более их могут проредактировать.
А вот в ХП никто точно трогать не станет.
Эти списки относятся к алгоритму, не считаю их нужным хранить в разделе данных (в таблицах).
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013717
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
собирается изменять/перекомпилировать ХП каждый раз, когда нужно изменить список.
Если уж извращаться, то можно и без хп обойтись, и сделать например view с селектом типа
Код: sql
1.
2.
3.
SELECT 1013 FROM RDB$DATABASE UNION ALL
SELECT 1014 FROM RDB$DATABASE UNION ALL
SELECT 1015 FROM RDB$DATABASE ...


Я такие вьюхи видел в реале, применяют для справочников типа Юг, Север, Запад, Восток. Ненавижу
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013718
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983Эти списки относятся к алгоритму

Значит и храниться они должны в алгоритме, а не БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013720
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983,

Или как предлагает Сибиряков - делай отдельную таблицу, суй туда данные и делай тривиальный select или в процедуру отдавай строку, потом ее разбивай на части. Ссылки тебе дали.
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013721
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983
Эти списки относятся к алгоритм
Ну, тогда всё понятно. Что ж ты раньше не сказал.
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013722
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983
таких списков будет много, изменятся они будет, но редко.
Мне не нравится куча "мелких" таблиц
одна таблица с полями
list_idid
list_id - идентификатор набора
и всего делов
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013724
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983,

Подредактировать. Ну да, права дать не судьба...
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013730
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо.
Отдельная таблица вариант, но он мне не нравится.
Ответ получил, sql-конструкция такого вида в FB не существует)

DarkMaster,
Не всегда есть возможность дать права.

Dimitry Sibiryakov,
чем плохо алгоритм реализовать в БД?
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013732
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983
Не всегда есть возможность дать права.
Тогда тебе и процедуру точно так же подправить могут.
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40013740
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983чем плохо алгоритм реализовать в БД?

Практически всем. Начиная от общей неторопливости и заканчивая проблемой использования
результата.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40014720
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983
Всем спасибо.
Отдельная таблица вариант, но он мне не нравится.
Ответ получил, sql-конструкция такого вида в FB не существует)

DarkMaster,
Не всегда есть возможность дать права.

Dimitry Sibiryakov,
чем плохо алгоритм реализовать в БД?


Я видел такие БД. Так некоторые реализуют отношение М-то-М.
Вместо таблицы связи делают поле строковое очень длинное, и туда лепят строку вида
1013,1014,1015,1022,1023,1040,1041,1057,1058,1059,1060,1066,1070
А потом качаются стоя в гамаке на лыжах.
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40014768
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11> А потом качаются стоя в гамаке на лыжах.

Одно другого не исключает - это может быть вариацией
хранимого агрегата, вовсе необязательно делать её вместо
классической таблицы связей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возврат списка значений из ХП
    #40032470
Zdravko Gabrovski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
CREATE OR ALTER PROCEDURE PRC_TOKENIZE (TEXT BLOB SUB_TYPE TEXT(8))
RETURNS (
	"INDEX" INTEGER,
	WORD VARCHAR(400)
)
AS
DECLARE VARIABLE LOCAL_TEXT VARCHAR(100);
DECLARE VARIABLE LOCAL_CHAR VARCHAR(1);
DECLARE VARIABLE LOCAL_INDEX INTEGER;
DECLARE VARIABLE TEXT_LENGTH INTEGER;
DECLARE VARIABLE Token_chars VARCHAR(100);
Declare VARIABLE IsInTag Boolean;
BEGIN
  /* Procedure body */
  Token_chars = ' !@#$%^&*()-_+=[]{};:''"\|`~,./?<>“”'||ASCII_CHAR(13)||ASCII_CHAR(10);
  :"INDEX" = 0;
  if (Text is not null ) then begin
    local_text = '';
    local_index = 1;
    text_length = OCTET_LENGTH(Text);
    IsInTag = False;
    While ( local_index <= text_length ) do begin
      LOCAL_CHAR = SUBSTRING( Text from local_index for 1 );
      if ( LOCAL_CHAR = '<') then
        IsInTag = True;
      else
        if (IsInTag) then begin
          if ( LOCAL_CHAR = '>' ) then
            IsInTag = False; 
          end
        else    
          if (POSITION( LOCAL_CHAR, TOKEN_CHARS )=0) THEN
            local_text = LOCAL_TEXT||LOCAL_CHAR;
          else
            begin
            Word = Trim(Upper(local_text));
            if (Word<>'') then begin -- Eliminate HTML Tokens
              SUSPEND;
              :"INDEX" = :"INDEX" + 1;
              end
            LOCAL_TEXT = '';
            end
      local_index = local_index + 1;  
      end
    if (local_text<>'') then begin
      Word = Trim(Upper(local_text));
      if (Word<>'') then begin
        SUSPEND;
        :"INDEX" = :"INDEX" + 1;
        end
      LOCAL_TEXT = '';            
      end  
    end
END


Код: sql
1.
SELECT * FROM PRC_TOKENIZE('1013,1014,1015,1022,1023,1040,1041,1057,1058,1059,1060,1066,1070')


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
|INDEX      |WORD                                                                                                |
|-----------|----------------------------------------------------------------------------------------------------|
|0          |1013                                                                                                |
|1          |1014                                                                                                |
|2          |1015                                                                                                |
|3          |1022                                                                                                |
|4          |1023                                                                                                |
|5          |1040                                                                                                |
|6          |1041                                                                                                |
|7          |1057                                                                                                |
|8          |1058                                                                                                |
|9          |1059                                                                                                |
|10         |1060                                                                                                |
|11         |1066                                                                                                |
|12         |1070                                                                                                |
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возврат списка значений из ХП
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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