Следующая процедура делает то, что вы описываете:
SET TERM !!;
CREATE PROCEDURE concat_names
RETURNS (concat VARCHAR(2000))
AS
DECLARE VARIABLE name VARCHAR(100);
BEGIN
concat = '';
FOR SELECT first_name || ' ' || last_name FROM employee INTO :name
DO BEGIN
concat = concat || name || ', ';
END
END!!
SET TERM ;!!
EXECUTE PROCEDURE concat_names;
Но я подвергаю сомнению мудрость этого решения. Откуда вы знаете, что VARCHAR достаточно длинный для всех строк в нужном вам наборе данных?
Гораздо проще и безопаснее выполнить запрос, чтобы возвращать результат в приложение строка за строкой. У каждого языка программирования приложений есть методы для конкатенации строк, но, что более важно, у них есть более гибкие методы для управления ростом данных.
Кстати, «диалект» в Firebird и InterBase относится к режиму совместимости, который был введен, чтобы приложения, разработанные для InterBase 5.x, могли работать с более поздними версиями InterBase и Firebird. Это было почти десять лет назад, и AFAIK сегодня нет необходимости использовать что-то ниже диалекта 3.