我正在尝试使用Pro * c从我的C代码运行SQL。这是我的SQL
EXEC SQL select count(1) from MY_TABLE where id IN ( :format );
id是NUMBER(10),格式是包含值1,2,3,4,5
的char数组这是“非数字”的返回错误 但是,如果格式数组只是一个数字,它运行正常。 如果有人发现错误,请告诉我。
THX!
答案 0 :(得分:1)
IN
子句仅将绑定变量接受为(:1,:2,:3)
,因此您可以事先了解绑定变量的数量。这不太可能。
最简单的方法是在Pro * C中使用硬编码值形成动态查询字符串。
提供了其他解决方案答案 1 :(得分:0)
for(i=0;i<5;i++)
{
EXEC SQL select count(1) from MY_TABLE where id IN ( :format[i] );
}
我告诉使用上面的代码,因为它太糟糕了,只是解释了数组如何在Pro * C中工作。你必须给出数组的索引。
编辑:我为这个问题学到了新东西: - 我们也可以使用
EXEC SQL FOR 5
SELECT COUNT(1) FROM MY_TABLE WHERE id IN (:format);
EXEC SQL SELECT COUNT(1) FROM MY_TABLE WHERE id IN
(:format[0],:format[1],:format[2],:format[3],:format[4])