相当于Firebird 1.5中的LIST()

时间:2016-02-05 01:43:19

标签: sql firebird

Firebird 2.1以后可用的LIST()函数(http://www.firebirdsql.org/refdocs/langrefupd21-aggrfunc-list.html)正是我所需要的。不幸的是,我坚持使用Firebird 1.5。经过一番搜索后,我找不到可以上班的替代方案。

基本上我想在Firebird 1.5中将一堆行聚合成逗号分隔的字符串。

1 个答案:

答案 0 :(得分:0)

您可以使用此例程

sys.index_columns

用法示例(第一个参数是您的sql,它应该只返回一列):

create or alter procedure GETSTRFROMSQL
(
  SQLSTR blob sub_type text,
  SEPARATOR varchar(32)
)
returns
(
  OUTSTR blob sub_type text
)
as
declare tmpstr blob sub_type text;
begin
  outstr = '';
  for execute statement sqlstr
  into tmpstr do
  begin
    if (outstr = '')then
      outstr = tmpstr;
    else
      outstr = outstr || separator || tmpstr;
  end
  suspend;
end

当然最好升级到2.5或3.0,但不幸的是在那些版本中没有可能按list()中的值排序,所以这个例程无论如何都很有用