c++ - ORA-06550:第 1 行,第 7 列:PLS-00306:调用“输入”时参数的数量或类型错误
问题描述
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:调用“输入”时参数的数量或类型错误 ORA-06550:第 1 行,第 7 列:PLS-00306:调用“输入”时参数的数量或类型错误INPUT' ORA-06550:第 1 行,第 7 列:PLS-00306:调用'INPUT'时参数的数量或类型错误 ORA-06550:第 1 行,第 7 列:PLS-00306:调用中的参数数量或类型错误到“输入” ORA-06550:第 1 行,第 7 列:PLS-00306:调用“输入”时参数的数量或类型错误 ORA-06550:第 1 行,第 7 列:
我该如何解决这个问题,非常感谢。
解决方案
可能在模式级别而不是包级别定义类型可能会有所帮助
推荐阅读
- matlab - 防止数据接触轴
- excel - 单行复制粘贴宏,它将根据工作表之间的单元格内容重复
- javascript - 然后使用数组链接
- mysql - 存储过程 - 尝试获取字段大小
- python - 如何打印在 python 中不同类的方法中定义的变量值?
- scala - scala中的无符号整数
- node.js - 为什么当我安装一个新的 npm 包时,我必须运行“docker-compose down”,然后运行“docker-compose up --build”?
- java - compareTo 用于字母数字顺序中的字符串问题
- sql - CASE 函数在 Access 查询中不起作用
- ios - 如何在collectionView中只重新加载一个单元格?