Pro*C在in子句中不返回数字
我正在尝试使用Pro*C从我的C代码运行SQL。这是我的SQLPro*C在in子句中不返回数字,c,oracle,proc,C,Oracle,Proc,我正在尝试使用Pro*C从我的C代码运行SQL。这是我的SQL EXEC SQL select count(1) from MY_TABLE where id IN ( :format ); id是一个数字(10),格式是一个包含值1,2,3,4,5的字符数组 这是返回带有“非数字”的错误 但是,如果格式数组只是一个数字,则运行正常。 如果有人发现错误,请告诉我 谢谢 在子句中,只接受绑定变量作为(:1,:2,:3),这样您就知道了绑定变量的数量。这不太可能 最简单的方法是使用Pro*C中的硬
EXEC SQL select count(1) from MY_TABLE where id IN ( :format );
id是一个数字(10),格式是一个包含值1,2,3,4,5的字符数组
这是返回带有“非数字”的错误
但是,如果格式数组只是一个数字,则运行正常。
如果有人发现错误,请告诉我
谢谢
在
子句中,只接受绑定变量作为(:1,:2,:3)
,这样您就知道了绑定变量的数量。这不太可能
最简单的方法是使用Pro*C中的硬编码值形成动态查询字符串
子句中的和中有替代解决方案不支持以这种方式绑定变量。使用Pro*C,您可能需要使用硬编码值形成查询字符串,或者尝试考虑为IN运算符添加参数列表。无需在SQL中硬编码,只需添加(:form1,:form2,…)@OracleUser:Plz将其添加为注释,以便我可以将其标记为答案。
for(i=0;i<5;i++)
{
EXEC SQL select count(1) from MY_TABLE where id IN ( :format[i] );
}
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])