powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ищу аналог SyBase-вского LIST
5 сообщений из 5, страница 1 из 1
Ищу аналог SyBase-вского LIST
    #32325274
zztop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ищу аналог SyBase-вского LIST. Т.е. есть к примеру запрос select name from users и выдает мне
Иванов
Петров
Сидоров
а, надо получить одной символьной переменной "Иванов, Петров, Сидоров".
Понимаю, что в глазах гуру выгляжу полным ламером, но помогите плиз, да и не смейтесь тоже! Заранее спасибо за умные мысли!
P.S. Догадываюсь, что через процедуру надо, но то ли недосыпания постоянные, то ли переклинило, одним словом на месте как белка кручусь :(
...
Рейтинг: 0 / 0
Ищу аналог SyBase-вского LIST
    #32325287
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, нужна ХП.

.....
resultnames='';
for select name from users into :paramname do
resultnames=resultnames+paramname+', ';
suspend;
.....

Не забудь откинуть конечную зпт ;)
...
Рейтинг: 0 / 0
Ищу аналог SyBase-вского LIST
    #32325731
zztop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То ли лыжи (LG) не едут, то ли я...
Вот пишу эту самую процедуру-дуру, а оно или NULL дает или нифига не дает!

CREATE PROCEDURE TEST
RETURNS ( val VARCHAR(1400))
AS
DECLARE VARIABLE tmp VARCHAR(100);
BEGIN
FOR SELECT name FROM bite INTO :tmp DO
val=val+', '+tmp;
SUSPEND;
END

Где грабли??? :(
...
Рейтинг: 0 / 0
Ищу аналог SyBase-вского LIST
    #32325774
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По умолчанию val инициализируется в NULL (val = NULL)
Это все равно, что число на 0 умножать...
Попробуй:

CREATE PROCEDURE TEST
RETURNS ( val VARCHAR(1400))
AS
DECLARE VARIABLE tmp VARCHAR(100);
BEGIN

val = '';

FOR SELECT name FROM bite INTO :tmp DO
val=val+', '+tmp; /*<--- и здесь, кажется, более правильно : val=val||', '||tmp;*/
SUSPEND;
END
...
Рейтинг: 0 / 0
Ищу аналог SyBase-вского LIST
    #32602920
Posco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Yaffil со сборки 883 добавлена ф-ция LIST

так вот:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select
  bt.name,
  b.ver,
  b.number
from bso_action ba
  join bso b on b.id = ba.bso_id
  join bso_type bt on bt.id = b.type_id
where
  ba.id in (
  select actionid from bso_action where actiontype_id =  1  and ac_agentid = :agentid
  )
  and ba.actiontype_id =  3 
  and ba.operationdate between :DateBegin and :DateEnd
order by 
  bt.name,
  b.ver,
  b.number
сортирует правильно, как и ожидается
но:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select
  bt.name,
  b.ver,
  list(b.number||',')
from bso_action ba
  join bso b on b.id = ba.bso_id
  join bso_type bt on bt.id = b.type_id
where
  ba.id in (
  select actionid from bso_action where actiontype_id =  1  and ac_agentid = :agentid
  )
  and ba.actiontype_id =  3 
  and ba.operationdate between :DateBegin and :DateEnd
group by  bt.name,  b.ver
order by  bt.name,  b.ver, b.number
в результате список из list(b.number||',') формируется не по-порядку

b.number varchar(8)

Если всё зависит от сортировки строковых полей, то не понятна разница результатов в обоих запросах.

Заранее спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ищу аналог SyBase-вского LIST
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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