Oracle OCI错误:获取100000行时出现分段错误(核心转储)

时间:2015-09-23 14:39:06

标签: sql c oracle oci

在C中使用Oracle的OCI库,我试图通过简单的获取查询来获取100000行

char *query_3 = "SELECT id FROM idmap_id WHERE primary_id IN (SELECT id FROM idmap_id_1)";

idmap_id_1有100000行。我运行以下代码来获取

unsigned int key=100000;
char output[key][120];
sb2 output_ind[key];
ub2 output_len[key];
ub2 output_code[key];
OCIDefine *defnpp;

rc = OCIDefineByPos(stmt, &defnpp, errhp, 1, (dvoid*)output, 120, SQLT_STR, (dvoid*)output_ind, output_len, output_code, OCI_DEFAULT);

rc = OCIStmtExecute(svchp, stmt, errhp, key, 0, NULL, NULL, OCI_DEFAULT);

函数OCIDefineByPos对10000行完全正常,但当我尝试获取100000行时,它会出现Segmentation fault (core dumped)错误。

有人可以帮忙吗?

我注意到fetch返回98800行。如果我将获取的行数增加到98801,则会出现Segmentation fault (core dumped)错误。

1 个答案:

答案 0 :(得分:0)

您无法获取超过25000条记录。