当前位置:  开发笔记 > 人工智能 > 正文

Firebird存储过程用于连接多行中的所有字段值

如何解决《Firebird存储过程用于连接多行中的所有字段值》经验,为你挑选了1个好方法。

我的目标是编写一个存储过程,它可以将多行中的所有字段值收集到一个单独的输出变量中(可能是varchar(some_length)).它可能看起来很奇怪,但我非常肯定它是我可以在那种情况下使用的唯一一个.我之前没有使用过Firebird,并且存储过程看起来与其他众所周知的数据库系统不同.我的Firebird是1.5和方言3(不确定它是什么意思).所以也许有人可以用算法示例来帮助我.



1> Bill Karwin..:

以下过程执行您所描述的操作:

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中的"dialect"指的是引入的兼容模式,以便为InterBase 5.x开发的应用程序可以与更高版本的InterBase和Firebird一起使用.这差不多十年前,AFAIK今天没有必要使用比方言3更低的东西.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有