【发布时间】:2020-10-13 13:35:27
【问题描述】:
我已经从 SQLite Download Page 下载了最新的 SQLite.dll 并尝试使用 TFDPhysDriverLink.VendorLib 加载它
但是当我运行应用程序时,其中包含以下代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
FDConnection1.Close;
FDPhysSQLiteDriverLink1.Release;
FDPhysSQLiteDriverLink1.VendorLib:= 'Path\SQLite3.dll';
FDQuery1.Open('SELECT *, ROW_NUMBER() OVER() Col FROM TableName');
end;
它抛出:
[FireDAC][Phys][SQLite] 错误:“(”附近:语法错误
这意味着无法识别窗口函数ROW_NUMBER()。
- 我做错了什么?
- 如何强制 FireDAC 使用最新的 SQLite.dll?
【问题讨论】:
-
您是否查看了文档以查看 SQLite 是否完全支持该语法?如果是这样,我相信是
OVER()导致了这个问题。 -
SELECT *, ROW_NUMBER() OVER() Col FROM TableName肯定不是有效的 SQL。 -
SELECT *, ROW_NUMBER() OVER (ORDER BY Col) FROM TableName怎么样?见Built-in Window Functions。 -
不,
SELECT *, ROW_NUMBER() OVER() Col FROM TableName是有效的 SQL @ArnaudBouchez,甚至SELECT *, ROW_NUMBER() OVER( ORDER BY ColumnName) Col FROM TableName也不起作用 -
看来你得重新编译FireDAC,真的很蹩脚。请参阅Firedac not recognizing new ALTER feature in sqlite3 的回复。
标签: sqlite delphi firedac delphi-10-seattle