gpt4 book ai didi

java - 错误 - 从 Java 调用 Oracle 函数

转载 作者:行者123 更新时间:2023-11-30 03:25:20 28 4
gpt4 key购买 nike

我正在尝试调用一个 oracle 函数,该函数接受一个 varchar 输入参数并返回一个 varchar。但它会引发以下错误。我尝试过将 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之前,因为我们需要先设置输入参数,然后设置输出参数。查看相同的教程。

编辑 - 您的输入参数类型 (p_acct callid) 似乎有问题。在函数中,检查它的类型是什么。在 java 中相应地选择一个类型。

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com