Pro*c中调用存储过程返回游标的问题
帮我看看这个问题究竟出在哪里,谢谢!
在Pro*C中调用如下:
#include <stdio.h>
#include <string.h>
#include <atmi.h> /* TUXEDO Header File */
#include <userlog.h> /* TUXEDO Header File */
#define SQLNOTFOUND 1403
EXEC SQL INCLUDE sqlca;
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL BEGIN DECLARE SECTION;
/* VARIANT */
char c_PJLX[9]; /*票据类型*/
EXEC SQL VAR c_PJLX IS STRING(9);
sql_cursor my_cursor; /*票据返回结果集*/
char c_HM[257];
char c_YDDZ[257];
char c_NY[7];
EXEC SQL END DECLARE SECTION;
yhgetInvInfo(TPSVCINFO *rqst){
EXEC SQL ALLOCATE :my_cursor;
EXEC SQL CALL EPMA.PKG_CALC_INV_MANAGE.GETINVOICE(:my_cursor) Into :c_PJLX;
userlog("CALL GETINVOICEDATA END Return Values=%s, sqlcode=%d", c_PJLX, sqlca.sqlcode);
do{
EXEC SQL FETCH :my_cursor INTO :c_HM, :c_YDDZ, :c_NY;
userlog("Fetch cur_Temp HM=%s, YDDZ=%, c_NY=%s", c_HM, c_YDDZ, c_NY);
if( (sqlca.sqlcode == SQLNOTFOUND) || (sqlca.sqlcode <0) ) break;
}while(1);
EXEC SQL CLOSE :my_cursor;
EXEC SQL FREE :my_cursor;
}
调用后返回结果为
CALL GETINVOICEDATA END Return Values=0000, sqlcode=0
101025.p550-B!yhgetinvinfo.770230.1.0: Oracle Error : sqlcode=-1002
sqlerrmc=ORA-01002: fetch out of sequence
|