我有一行查询:
DECLARE VARIABLE var_SecondsOfTime INTEGER;
Run Code Online (Sandbox Code Playgroud)
但运行查询后,我收到此消息:
引擎错误(代码= 335544569):动态SQL错误.SQL错误代码= -104.令牌未知 - 第1行,第9列.VARIABLE.
SQL错误(代码= -104):令牌无效.
我在互联网上随处可见,所有的例子都显示了我正在使用的相同的声明风格.
怎么了?
我试图case在存储过程中使用该语句,但我得到了"Token unknown".case存储过程不支持?谢谢
我目前正在修改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)
现在,有没有解决方法,或者我被迫:
并重复每个表的过程?
我也期待着
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,但它没有.
我需要将我的android应用程序连接到我的firebird DB
有人知道怎么做吗?
请写下代码!
说我有一些SELECT陈述:
SELECT id, name FROM people
ORDER BY name ASC;
Run Code Online (Sandbox Code Playgroud)
我在people表中有几百万行,该ORDER BY子句可能比我在这里显示的要复杂得多(可能在十几列上运行).
我只检索行的一小部分(比如行1..11),以便在UI中显示它们.现在,我想解决以下问题:
id.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从句用吨OR和AND在状态.我必须反复这样做.使用我的测试数据,即使使用正确索引的列,这也需要数百毫秒,这太慢了.
是否有一些方法可以通过使用一些SQL:2003功能(如row_numberFirebird 3.0支持)来实现这一目的?我绝不是一个SQL大师,我需要一些指针.我可以创建一个缓存视图,其结果将包括排名/密集排名/行索引?
我使用的是Delphi 2010 Professional,它没有附带Firebird的dbExpress驱动程序.如果我开始使用Chau Chee Yang编写的Firebird dbExpress驱动程序,然后再升级到XE?企业(Firebird dbExpress驱动程序附带)代码才能运行?
刚刚从mySQL移动平台到firebird我发现很难找到一种可接受的方法来捕获从Java .jar应用程序传递到数据库服务器(Firebird)的SQL命令.我需要分析命令以及在执行时间等方面传递的查询的"成本".
使用MySQL可以使用maatkit工具包,但不幸的是,这似乎不适用于Firebird.
有没有人对Firebird的maatkit有适当的可比方法?或者使用strace或类似?
我可能是愚蠢的.还不确定.
尝试做一些应该简单的事情:
$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,一台单独的本地计算机
尝试了一堆组合,但似乎无法使任何工作.
编辑:只是一个抬头,这是一个火鸟数据库.不确定这是否会改变一切
我有以下选择,其目标是选择自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
我怎样才能做到这一点?
firebird ×10
sql ×4
java ×2
android ×1
case ×1
database ×1
dbexpress ×1
declaration ×1
delphi ×1
delphi-2010 ×1
firebird1.5 ×1
firebird2.5 ×1
flow-control ×1
monitor ×1
path ×1
php ×1
rank ×1
rowcount ×1
sql-order-by ×1
ubuntu ×1
variables ×1