【发布时间】:2012-04-10 15:35:17
【问题描述】:
我有一个整数列表或字符串列表,需要将它作为 Delphi DataSet 的参数传递。怎么做?
这是一个例子。 MyQuery 类似于:
select * from myTable where intKey in :listParam
我会将参数设置为列表或数组或其他内容:
MyQuery.ParamByName('listParam').AsSomething := [1,2,3];
这会导致这个查询被发送到 sql server:
select * from myTable where intKey in (1, 2, 3)
如果解决方案也适用于字符串,那就更好了,进行以下查询:
select * from myTable where stringKey in :listParam
变成:
select * from myTable where stringKey in ('a', 'b', 'c')
我相信这是一个简单的问题,但“IN”不是搜索网络的好关键字。
请回答我应该如何在IDE中配置参数,查询以及如何传递参数。
我正在使用 Delphi 7。
已编辑:我正在考虑答案是“不可能直接做”。如果有人给我一个非骇人听闻的答案,接受的答案将被更改。
【问题讨论】:
-
很遗憾,你不能。这是 SQL 语言的一个缺陷:它没有任何“列表类型”的概念。
-
根据您使用的 DBMS,可能会有一些选项供您选择。你在用什么? SQL Server、甲骨文、....?
-
@MikaelEriksson:我正在使用 Sql Server,但我认为这是 Delphi 语言问题。
-
这不是 Delphi 问题,而是 SQL 问题。有关更多信息以及一些可能的解决方法,请参阅 this answer to a similar question。
标签: sql sql-server delphi delphi-7