Pro * C返回不是IN子句中的数字

时间:2014-06-26 18:43:08

标签: c oracle proc

我正在尝试使用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!

2 个答案:

答案 0 :(得分:1)

IN子句仅将绑定变量接受为(:1,:2,:3),因此您可以事先了解绑定变量的数量。这不太可能。

最简单的方法是在Pro * C中使用硬编码值形成动态查询字符串。

AsKTomMy SO answer

提供了其他解决方案

答案 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])