首页 > 解决方案 > 如何使用游标从查询中获取所有结果?

问题描述

我正在做一些作业,其中我将 SQL 与 ProC/C++ 一起使用,并且我正在使用我的教授在之前的作业中给出的模板。问题是显示查询结果的函数似乎只输出一个元组。我希望它输出所有获取的数据,但语法对我来说有点陌生。

我的查询:

strcat((char *)sqlQueryToRun," select employeeName from Employees");

执行功能:

void  prepareAndExecuteIt() {

//  Prepare the query

    //sqlQueryToRun.len = strlen((char *) sqlQueryToRun.arr);
    exec sql PREPARE dbVariableToHoldQuery FROM :sqlQueryToRun;

/* The declare statement, below, associates a cursor with a
 * PREPAREd statement.  
 * The cursor name, like the statement
 * name, does not appear in the Declare Section.
 * A single cursor name can not be declared more than once.
*/

    exec sql declare cursorToHoldResultTuples cursor FOR dbVariableToHoldQuery;

    exec sql open cursorToHoldResultTuples  ;

    exec sql FETCH cursorToHoldResultTuples INTO :outputSupplierName;

    printf("\nSupplier name: %s\n", outputSupplierName);
    exec sql close cursorToHoldResultTuples;
}

当我知道此表中有更多名称时,这只会输出一个名称。从我读过的内容来看,应该有某种我可以使用的 fetchall() 方法,但我不确定如何使用这种语法应用它。

尝试循环 fetch 语句看起来像这样,并给出以下错误消息:

for (int i = 0; i < 10; i++){
        exec sql FETCH cursorToHoldResultTuples INTO :outputSupplierName;
        printf("%s\n", outputSupplierName);
    }

make[1]: *** [/home/cs/prof/4620/myMake1.mk:104: pc1] Error 1

make: *** [/home/cs/prof/4620/myMake1.mk:110: HW6.o] Error 2

标签: c++sqloracle-pro-c

解决方案


推荐阅读