1

我需要执行一个简单的查询:

SELECT * FROM MyTable WHERE Id IN (:ids)

显然,它返回给定列表中具有主键“Id”的记录集。如何将整数 ID 数组传递给参数“ids”的 ADOQuery.Parameters?我试过 VarArray - 它不起作用。默认情况下,参数“ids”具有 FieldType = ftInteger,如果重要的话。

4

2 回答 2

4

没有可用于将值列表传递给的参数类型in。不幸的是,这是参数化 SQL 的缺点之一。

您必须从代码构建查询以生成值列表,或生成可以从代码填充的参数列表。这是因为您可以将每个值作为不同的参数传递,如下所示:

SELECT * FROM MyTable WHERE Id IN (:id1, :id2, :id3)

但由于该列表可能具有可变大小,因此您必须更改 SQL 以添加参数。在这种情况下,生成值列表同样容易,尽管参数化查询可能会被更好地缓存,具体取决于您使用的数据库。

于 2012-10-12T13:27:53.667 回答
0

IN 参数只接受一个逗号分隔的值字符串,例如 (1,2,3,4,5) 所以我假设您将数据类型设置为 ftstring 并构建字符串并传递它...?没试过,但这是我尝试的......

于 2012-10-12T13:24:57.857 回答