Код C ++, как показано ниже:
vector<string> vA1(A1, A1 + k);
vector<string> vA2(A2, A2 + k);
vector<double> vA3(A3, A3 + k);
vector<string> vA4(A4, A4 + k);
vector<string> vA5(A5, A5 + k);
stmt = con->createStatement("BEGIN ABC.INPUT(:1, :2, :3, :4, :5); END;");
oracle::occi::setVector(stmt, 1, vA1, "VARCHAR2_5_TYPE");
oracle::occi::setVector(stmt, 2, vA2, "VARCHAR2_5_TYPE");
oracle::occi::setVector(stmt, 3, vA3, "NUMBER_10_2_TYPE");
oracle::occi::setVector(stmt, 4, vA4, "VARCHAR2_16_TYPE");
oracle::occi::setVector(stmt, 5, vA5, "VARCHAR2_16_TYPE");
stmt->executeUpdate();
con->commit();
con->terminateStatement(stmt);
Oracle сценарий, как показано ниже:
CREATE OR REPLACE PACKAGE "ABC" as
TYPE varchar2_5_type is table of varchar2(5) index by PLS_INTEGER;
TYPE number_10_2_type is table of number(10,2) index by PLS_INTEGER;
TYPE varchar2_16_type is table of varchar2(16) index by PLS_INTEGER;
CAL_MSLP PLS_INTEGER := 0;
PROCEDURE INPUT(A1_ARRAY in varchar2_5_type,A2_ARRAY in varchar2_5_type,A3_ARRAY IN OUT NOCOPY number_10_2_type,A4_ARRAY in varchar2_16_type,A5_ARRAY in varchar2_16_type);
end ABC;
/
CREATE OR REPLACE PACKAGE BODY "ABC" as
PROCEDURE INPUT(A1_ARRAY in varchar2_5_type,A2_ARRAY in varchar2_5_type,A3_ARRAY in OUT NOCOPY number_10_2_type,A4_ARRAY in varchar2_16_type,A5_ARRAY in varchar2_16_type) is
MSL_VALUE NUMBER(10,2);
BEGIN
......
END INPUT;
END ABC;
/
Но когда я запускаю программу и вызываю функцию OCCI, чтобы поместить массив данных в Oracle db, сообщение об ошибке, как показано ниже:
ORA-06550: строка 1, столбец 7: PLS-00306: неправильное количество или типы аргументов при вызове 'INPUT' ORA-06550: строка 1, столбец 7: PLS-00306: неправильное количество или типы аргументов при вызове «INPUT» ORA-06550: строка 1, столбец 7: PLS-00306: неправильное количество или типы аргументов при вызове «INPUT» ORA-06550: строка 1 , столбец 7: PLS-00306: неправильное количество или типы аргументов при вызове «INPUT» ORA-06550: строка 1, столбец 7: PLS-00306: неправильное количество или типы аргументов при вызове «INPUT» ORA-06550: строка 1, столбец 7:
Как я могу исправить эту проблему, большое спасибо.