gpt4 book ai didi

Delphi BDE PostgreSQL查询执行(语法错误)

转载 作者:行者123 更新时间:2023-11-29 11:52:49 33 4
gpt4 key购买 nike

我正在为我的应用程序使用 BDS 2006PostgreSQL
我有以下代码,其中包含用于在我的表中查找主键值的查询。

 Query.SQL.Clear;
Query.SQL.Add('SELECT pg_attribute.attname,format_type(pg_attribute.atttypid, pg_attribute.atttypmod)FROM pg_index, pg_class, pg_attribute WHERE pg_class.oid = '+#39+'tablename'+#39+' ::regclass AND indrelid = pg_class.oid AND pg_attribute.attrelid = pg_class.oid AND pg_attribute.attnum = any(pg_index.indkey)AND indisprimary');
Query.Open;

我收到一条语法错误消息

 General SQL error.  
ERROR: syntax error at or near ":";

我尝试使用 #58 代替 : 但结果相同。
以下查询在我的 PostgreSQL 中运行良好。

关于我如何让它工作的任何观点

最佳答案

1) 如果您放置 BDE 标记,那么我希望您使用 BDE + BDE ODBC SQLLink + PgSQL ODBC 驱动程序。 BDE 组件期望 ':' 作为参数标记,而 '::' 作为转换为 ':' 的转义序列。您有两个基本选择:

  • 设置TQuery.ParamCheck为False,手工填写Params集合;
  • 将每个 ':' 加倍,这不是参数标记。所以,它将是 '::::'

2) 您可以使用 3d 方库,例如 AnyDAC ,这就是理解 PgSQL '::' 的含义。因此,他们不会将 '::' 识别为参数标记。

关于Delphi BDE PostgreSQL查询执行(语法错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8969196/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com