C++ 如何使用游标从查询中获取所有结果?
我正在做一些家庭作业,其中我将SQL与ProC/C++结合使用,我使用的是我的教授在上一次作业中给出的模板。问题在于,显示查询结果的函数似乎只输出一个元组。我希望它输出所有提取的数据,但语法对我来说有点陌生 我的问题是:C++ 如何使用游标从查询中获取所有结果?,c++,sql,oracle-pro-c,C++,Sql,Oracle Pro C,我正在做一些家庭作业,其中我将SQL与ProC/C++结合使用,我使用的是我的教授在上一次作业中给出的模板。问题在于,显示查询结果的函数似乎只输出一个元组。我希望它输出所有提取的数据,但语法对我来说有点陌生 我的问题是: strcat((char *)sqlQueryToRun," select employeeName from Employees"); 执行功能: void prepareAndExecuteIt() { // Prepare the query
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);
}
for(int i=0;i<10;i++){
exec sql FETCH CURSTOHOLDRESULT耦合到:outputSupplierName;
printf(“%s\n”,outputSupplierName);
}
make[1]:***[/home/cs/prof/4620/myMake1.mk:104:pc1]错误1
make:**[/home/cs/prof/4620/myMake1.mk:110:HW6.o]错误2
你不能循环一次获取一个结果,直到光标到达结果集的末尾吗?@paddy当我将fetch语句放入循环时,它会抛出错误。不幸的是,我们正在使用的proc编译器没有提供任何有用的信息来说明哪里出了问题,但我会继续尝试。然而,如果我只是不断地粘贴fetch语句,它就会不断地给我元组。奇怪。你刚才提供的信息,以及抛出的实际错误消息,应该作为关键信息包含在你的问题中。否则,这很容易被视为一个错误。我不知道这个“亲C”是什么,你正在使用,但你的问题被标记为C++。所显示的代码不是C++。抱歉,从我理解的PROC是Oracle数据库中的SQL编程语言。主机语言是C++,但我认为预编译器称为PROC。我不太确定自己,但是我写的语言是C++。我将更改标题并将错误消息添加到帖子中。您是否搜索过Stack Overflow以查找类似问题?