首页 > 解决方案 > 错误:调用过程的参数数量错误

问题描述

程序是:

PERSON_Q(STATUS_OBJ 中的状态,COMM OUT VARCHAR2)

创建或替换 TYPE STATUS_OBJ AS OBJECT (ID NUMBER, MESSAGE VARCHAR2(255), STATE NUMBER, NAME VARCHAR2(1000));

我的Java代码是:

public void update() {
OracleCallableStatement os = null;
Connection conn = null;
Object[] obj = new Object[4];
try {
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
conn = DriverManager.getConnection(url, username, pwd);
obj[0]=2;
obj[1]="status";
obj[2]=2;
obj[3]="name";
os = (OracleCallableStatement)conn.prepareCall("call PERSON_Q(?,?)");
StructDescriptor sd = StructDescriptor.createDescriptor("STATUS_OBJ", conn);
os.setObject(1, new STRUCT(sd, conn, obj));
os.registerOutParameter(2, OracleTypes.VARCHAR, "COMM");
int response = os.executeUpdate();
} catch(){SQLException e}
}

例外:

{ORA-06553:PLS-306:调用“PERSON_Q”的参数数量或类型错误}

标签: sqloracle

解决方案


看起来您的 SP 只有一个 IN 参数,但在您的代码中您试图传入两个参数:

call PERSON_Q(?,?)

推荐阅读