从 java 调用 SQL 函数时出错

Error while calling SQL function from java

您好,我正在尝试从 java 调用 SQL 函数,但出现以下错误:

com.sybase.jdbc4.jdbc.SybSQLException: The request for procedure 'getData' failed because 'getData' is a SQL function object.

下面java调用函数的代码:

String Id = "123";
String result;
Connection conn = null;
CallableStatement scs = null;
try {
    conn = getDatabaseConnection();
    String query = "{? = call getData(?)}";
    scs = conn.prepareCall(query);           
    scs.registerOutParameter(1, java.sql.Types.VARCHAR);
    scs.setString(2, id);
    scs.executeUpdate();
    result = scs.getString(1);  

和SQL函数如下:

create function getData (@id varchar2) returns char(12)

我错过了什么吗?

请帮忙

Jdbc是调用过程,而你定义的是函数。 查看异常:

过程 'getData' 的请求失败,因为 'getData' 是一个 SQL 函数对象

因此您必须将 getData 定义为过程而不是函数。

尝试调用 scs.execute(); 而不是 scs.executeUpdate();

我调用了下面的函数并且它起作用了:

String Id = "123";
String result;
Connection conn = null;
CallableStatement scs = null;
ResultSet resultSet = null;
try {
            conn = getDatabaseConnection();
            String query = "select db.getData(?) ";
            scs = conn.prepareCall(query);
            //Set of parameters
            scs.setString(1, Id);
            //Execution
            resultSet = scs.executeQuery();
            while (resultSet.next()) {
                //Get the result
                result = resultSet.getString(1);
            }