= val1 and col where col >= ? an-6ren">
gpt4 book ai didi

c - 如何在 Informix ESQL/C 的 "using"中动态提供值?

转载 作者:行者123 更新时间:2023-12-01 23:34:42 25 4
gpt4 key购买 nike

我们的 Informix ESQL/C (.ec) 程序使用查询:

select count(*) from <table> where col >= val1 and col <= val2 

在我们使用的程序中:

select count(*) from <table> where col >= ? and col <= ? 

现在,新的要求是我们需要根据值列表进行搜索。该列表是动态生成的,我们不确定列表的大小。如果列表包含 2 列,查询将类似于:

select count(*) from <table> where ((col >= ? and col <= ?) OR (col >= ? and col <= ?))

我们能够构建查询,但我们不确定如何执行。

当前执行情况如下:

exec sql execute :select_prepare using :val1, :val2

我们将所有值都放在一个整数数组中。由于不确定参数的数量,我们在准备执行语句时陷入困境。

下面的命令无效

exec sql execute :select_prepare using :val_array 

有人可以为此提供任何解决方案吗?

最佳答案

这确实看起来很尴尬。 啊,Jonathan 带来了明确的答案。但是,我的建议是左场替代方案。

解决此问题的一种方法是按照以下方式做一些事情:注意:以下是未经测试的概念代码

CREATE TEMP TABLE ranges (
lo INT,
hi INT
);

for(..){
INSERT INTO ranges (?,?) USING :var1, :var2;
}

SELECT COUNT(DISTINCT id) FROM table, ranges WHERE col BETWEEN lo AND hi

/* later.. */

DROP TABLE ranges;

关于c - 如何在 Informix ESQL/C 的 "using"中动态提供值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350065/

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