免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2012 | 回复: 0
打印 上一主题 下一主题

PRO*C中调用存储过程参数绑定问题,如何绑定结构数组变量? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-02 14:42 |只看该作者 |倒序浏览
1.包定义
CREATE OR REPLACE PACKAGE CARD_BATCH AS
   TYPE CURSOR_TYPE  IS REF CURSOR;
   TYPE recTracStatics IS RECORD(
           BP_FLAG        CHAR(1),/*公司/个人标志*/
           CURR_NUM       CHAR(3),/*币种*/
           SD_CMPDRP      NUMBER(11,2),/*复利借方*/
           SD_CMPCRP      NUMBER(11,2),/*复利贷方*/
           SD_INTDRP      NUMBER(11,2),/*应收利息借方*/
           SD_INTCRP      NUMBER(11,2),/*应收利息贷方*/
           SD_LOANAMTDRP  NUMBER(11,2),/*贷款借方*/
           SD_LOANAMTCRP  NUMBER(11,2),/*贷款贷方*/
           SD_DEPAMTDRP   NUMBER(11,2),/*存款借方*/
           SD_DEPAMTCRP   NUMBER(11,2)/*贷款贷方*/
        );
   TYPE  arrTracStatics IS TABLE OF recTracStatics INDEX BY BINARY_INTEGER;

      PROCEDURE CAL_TRAC(vsDbName IN VARCHAR2,
                      vsBankNo IN VARCHAR2,
                      voErrCode OUT NUMBER,
                      voErrMsg OUT VARCHAR2,
                      vlisTracStatics OUT arrTracStatics);
                     
        
END CARD_BATCH;

2.包体定义
CREATE OR REPLACE PACKAGE BODY CARD_BATCH  AS

PROCEDURE CAL_TRAC
  (
         vsDbName IN VARCHAR2,
         vsBankNo IN VARCHAR2,
        voErrCode OUT NUMBER,
        voErrMsg OUT VARCHAR2,
        vlisTracStatics OUT arrTracStatics
  ) IS
       
BEGIN
     .....................;

END;
END  CARD_BATCH  ;

3.PRO*C中调用存储过程部分代码
  
main(int argc,char **argv)
{
EXEC SQL BEGIN DECLARE SECTION;
        struct recTracStatics{                                                                             char BP_FLAG[2],/*公司/个人标志*/                                                  char CURR_NUM[3],/*币种*/                                                          float SD_CMPDRP,/*复利借方*/                                                       float SD_CMPCRP,/*复利贷方*/                                                       float SD_INTDRP,/*应收利息借方*/                                                   float SD_INTCRP,/*应收利息贷方*/                                                   float SD_LOANAMTDRP,/*贷款借方*/                                                   float SD_LOANAMTCRP,/*贷款贷方*/                                                   float SD_DEPAMTDRP,/*存款借方*/                                                    float SD_DEPAMTCRP/*贷款贷方*/                                             } ;                                                                                        struct recTracStatics  lisTracStatics[100];                                                long        voErrCode;
        char        voErrMsg[4096];
EXEC SQL END DECLARE SECTION;

............................
EXEC SQL EXECUTE
        BEGIN
                CARD_BATCH.CAL_TRC(
                        'TESTDB',
                        '0100',
                        :voErrCode,
                        :voErrMsg,
                        :lisTracStatics
                        );
        END;
END-EXEC;

............................

}

4.执行时总是报 -1046错误,请问是什么原因?

5.PRO*C调用存储过程时如何绑定结构数组变量?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP