ORA-06550: строка 1, столбец 7: PLS-00306: неправильное количество или типы аргументов при вызове 'INPUT' - PullRequest
0 голосов
/ 19 июня 2020

Код 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:

Как я могу исправить эту проблему, большое спасибо.

1 Ответ

0 голосов
/ 20 июня 2020

Вероятно, определение типов на уровне схемы вместо уровня пакета может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...