- 论坛徽章:
- 0
|
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调用存储过程时如何绑定结构数组变量? |
|