在编译运行proc程序时候,出现ora-1002错误,程序中简单步骤:
1、打开游标,
2、通过捆绑变量v1,循环执行select col_name from table_name where colB= :v1,获得结果集。
3、循环完成之后,关闭游标
类似语句如下:
exec sql declare C cursor for S;
exec sql open c using :v1
while ( xxxx)
{
/* v1 有多个值*/
执行select col_name from table_name where colB=:v1
}
exec sql close c;
问题解决:
在oracle 10g和11g,出现类似上述查询语句时候,在同一个游标下,第一次赋予捆
绑变量的值,查询没有问题,但在第二次赋予捆绑变量新值的时候,有可能出现
ORA-1002错误。
所以修改语句将打开和关闭游标放置在循环语句的头和尾,每一次循环,赋予新的捆绑变量值,采用新的游标。类似于:
while ( xxxx)
{
exec sql open c using :v1
/* v1 有多个值*/
执行select col_name from table_name where colB=:v1;
exec sql close c;
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/354732/viewspace-714114/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/354732/viewspace-714114/