标签: firebird

无法在Firebird 2.5中声明变量,为什么?

我有一行查询:

DECLARE VARIABLE var_SecondsOfTime INTEGER;
Run Code Online (Sandbox Code Playgroud)

但运行查询后,我收到此消息:

引擎错误(代码= 335544569):动态SQL错误.SQL错误代码= -104.令牌未知 - 第1行,第9列.VARIABLE.

SQL错误(代码= -104):令牌无效.

我在互联网上随处可见,所有的例子都显示了我正在使用的相同的声明风格.

怎么了?

variables firebird declaration firebird2.5

5
推荐指数
2
解决办法
8829
查看次数

存储过程中的Firebird CASE语句

我试图case在存储过程中使用该语句,但我得到了"Token unknown".case存储过程不支持?谢谢

sql firebird stored-procedures case flow-control

5
推荐指数
2
解决办法
6489
查看次数

更新生成器值问题

我目前正在修改Firebird v.1.5数据库.

数据库结构将被修改为使用interbase组件从delphi应用程序运行查询,我面临的问题是我需要运行大量查询,其中一些包括创建生成器和更新生成器值,问题在于我需要在尽可能少的查询中实现这一点,但似乎(至少对我而言)这不可能实现,我正在尝试做的是以下内容:

 /* this command creates a generator to be used for table TABLENAME */
CREATE GENERATOR GEN_TABLENAME;
Run Code Online (Sandbox Code Playgroud)

所以我创建了一个生成器,现在我需要在表TABLENAME的当前最大id处设置它的值,如下所示:

/* one would expect that the following command would work, well it doesn't */
SET GENERATOR GEN_TABLENAME TO (SELECT MAX(ID) FROM TABLENAME);
Run Code Online (Sandbox Code Playgroud)

现在,有没有解决方法,或者我被迫:

  • 创建发电机
  • 获得最大ID
  • 更新生成器值

并重复每个表的过程?

我也期待着

SELECT
  SELECT MAX(ID) AS ID_TABLENAME_1 FROM TABLENAME_1,
  ...
  SELECT MAX(ID) AS ID_TABLENAME_N FROM TABLENAME_N
Run Code Online (Sandbox Code Playgroud)

将是一个解决方法,从一个命令中的每个表中获取最大ID,但它没有.

firebird auto-increment firebird1.5

5
推荐指数
3
解决办法
7363
查看次数

如何连接到android上的firebird DB

我需要将我的android应用程序连接到我的firebird DB

有人知道怎么做吗?

请写下代码!

java firebird android

5
推荐指数
1
解决办法
7026
查看次数

根据行ID查找排序中的行号,然后查找其邻居

说我有一些SELECT陈述:

SELECT id, name FROM people
   ORDER BY name ASC;
Run Code Online (Sandbox Code Playgroud)

我在people表中有几百万行,该ORDER BY子句可能比我在这里显示的要复杂得多(可能在十几列上运行).

我只检索行的一小部分(比如行1..11),以便在UI中显示它们.现在,我想解决以下问题:

  1. 找到给定的行数id.
  2. 显示之前的5个项目和连续的5个项目id.

一旦我解决了问题1,问题2很容易解决,因为如果我知道我要查找的项目1000在排序结果集中有行号(这是Firebird SQL方言),我就可以使用这样的东西:

SELECT id, name FROM people
   ORDER BY name ASC
   ROWS 995 TO 1005;
Run Code Online (Sandbox Code Playgroud)

我也知道,我能找到的等级通过计算所有一个我找前落入排了一排,但是这可能会导致很长的WHERE从句用吨ORAND在状态.我必须反复这样做.使用我的测试数据,即使使用正确索引的列,这也需要数百毫秒,这太慢了.

是否有一些方法可以通过使用一些SQL:2003功能(如row_numberFirebird 3.0支持)来实现这一目的?我绝不是一个SQL大师,我需要一些指针.我可以创建一个缓存视图,其结果将包括排名/密集排名/行索引?

sql firebird sql-order-by rowcount rank

5
推荐指数
1
解决办法
5612
查看次数

Chau Chee Yang的dbExpress和XE2 Enterprise dbExpress for Firebird有多兼容?

我使用的是Delphi 2010 Professional,它没有附带Firebird的dbExpress驱动程序.如果我开始使用Chau Chee Yang编写的Firebird dbExpress驱动程序,然后再升级到XE?企业(Firebird dbExpress驱动程序附带)代码才能运行?

delphi firebird dbexpress delphi-2010

5
推荐指数
1
解决办法
324
查看次数

如何清除firebird查询缓存?

如何清除firebird查询缓存以执行我的性能测试?

这里的 SqlServer示例

TKS

database firebird database-administration

5
推荐指数
1
解决办法
2649
查看次数

在Ubuntu(Java app)下监视对Firebird的SQL调用

刚刚从mySQL移动平台到firebird我发现很难找到一种可接受的方法来捕获从Java .jar应用程序传递到数据库服务器(Firebird)的SQL命令.我需要分析命令以及在执行时间等方面传递的查询的"成本".

使用MySQL可以使用maatkit工具包,但不幸的是,这似乎不适用于Firebird.

有没有人对Firebird的maatkit有适当的可比方法?或者使用strace或类似?

java sql ubuntu firebird monitor

5
推荐指数
1
解决办法
1477
查看次数

ibase_connect:本地计算机主机,无法弄清楚工作路径

我可能是愚蠢的.还不确定.

尝试做一些应该简单的事情:

$database = '10.10.10.81:?????';
$username = 'admin';
$password = 'pw';

$conn = ibase_connect($database, $username, $password);
if (!$conn)
{
    echo "Error while connecting: ".ibase_errmsg();
    exit();
}

echo 'workan';
Run Code Online (Sandbox Code Playgroud)

我们遇到了错误:远程接口拒绝了连接.从另一个问题我在这里读到,这来自各种各样的事情:可能是用户/密码问题,可能是主机($ database)问题,还有我忘记的其他问题.

我相信我的主机字符串是非常错误的,无法弄清楚我应该怎么做.也许我的google-fu不符合标准.

试图在10.10.10.81上找到E:\ fishbowl\database\data\base.fdb,一台单独的本地计算机

尝试了一堆组合,但似乎无法使任何工作.

编辑:只是一个抬头,这是一个火鸟数据库.不确定这是否会改变一切

php firebird path

5
推荐指数
1
解决办法
2354
查看次数

SQL - 如何在不必传递select的所有列的情况下执行组操作?

我有以下选择,其目标是选择自X天以来没有销售的所有客户,并且还提供上次销售的日期和销售数量:

select s.customerId, s.saleId, max (s.date) from sales s
group by s.customerId, s.saleId
having max(s.date) <= '05-16-2013'
Run Code Online (Sandbox Code Playgroud)

但这样它给我带来了以下内容:

19 | 300 | 26/09/2005
19 | 356 | 29/09/2005
27 | 842 | 10/05/2012
Run Code Online (Sandbox Code Playgroud)

换句话说,前两行是来自同一个客户(id 19),我希望他每个客户只能获得一条记录,这将是最大日期的记录,在这种情况下,第二条记录来自此名单.通过这个逻辑,我应该从"group by"子句中取消s.saleId,但是如果我这样做,当然,我得到错误:选择列表中的表达式无效(不包含在聚合函数或GROUP BY中)条款).

我正在使用firebird 1.5

我怎样才能做到这一点?

sql firebird

5
推荐指数
1
解决办法
5238
查看次数