我正在尝试调用一个使用一个varchar输入参数并返回varchar的oracle函数。但它引发以下错误。我曾尝试在Java中将类型从varchar更改为nvarchar,但没有帮助。

 java.sql.SQLException: ORA-06550: line 1, column 13:
 PLS-00306: wrong number or types of arguments in call to 'GET_DATA_TEST'


PLSQL函数定义

 create or replace FUNCTION     Get_Data_test (p_acct callid)
  RETURN VARCHAR2
  AS


Java函数:

        String call = "{ ? = call Get_Data_test(?)}";
        CallableStatement cstmt = con.prepareCall(call);
        cstmt.setQueryTimeout(1800);
        cstmt.registerOutParameter(1, oracle.jdbc.OracleTypes.VARCHAR);
        cstmt.setString(2, "12345678");
        cstmt.executeQuery();
        name = cstmt.getString(1);
        System.out.println("hello: "+name);

最佳答案

cstmt.setString(2, "12345678")给人的印象是参数中有两个。因此将其更改为cstmt.setString(1, "12345678")

另外,它应该在cstmt.registerOutParameter之前,因为我们需要先设置输入参数,然后设置outparam。查看相同的教程。

编辑-看起来您的输入参数类型(p_acct callid)有问题。在功能上,检查它的类型。在Java中相应地选择一个类型。

关于java - 错误-从Java调用Oracle函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30376961/

10-11 03:06
查看更多