ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » Pro*c中调用存储过程返回游标的问题

标题: [PRO*C] Pro*c中调用存储过程返回游标的问题
离线 luvic
一般会员



精华贴数 0
个人空间 0
技术积分 90 (18095)
社区积分 22 (7338)
注册日期 2001-11-7
论坛徽章:0
      
      

发表于 2008-9-17 19:48 
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


只看该作者    顶部
离线 luvic
一般会员



精华贴数 0
个人空间 0
技术积分 90 (18095)
社区积分 22 (7338)
注册日期 2001-11-7
论坛徽章:0
      
      

发表于 2008-9-18 19:01 
顶一下,有人帮忙看看  ?


只看该作者    顶部
离线 sensilo
一般会员


精华贴数 1
个人空间 0
技术积分 528 (3724)
社区积分 23 (7276)
注册日期 2006-5-28
论坛徽章:2
2008北京奥运纪念徽章:篮球2008北京奥运纪念徽章:田径    
      

发表于 2008-9-18 19:09 
there is no definition of cursor my_cursor


__________________
i love this game
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问