从java调用SQL函数时出错

时间:2018-01-26 12:02:10

标签: java jdbc sybase

您好我正在尝试从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)
我错过了什么吗?

请帮忙。

3 个答案:

答案 0 :(得分:0)

Jdbc正在调用过程,但您定义的是函数。 见例外:

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

所以你必须将getData定义为过程而不是函数。

答案 1 :(得分:0)

尝试致电document.getElementById('c1').innerHTML = `<ol><li>${ this.a }</li></ol>`; 而不是scs.execute();

答案 2 :(得分:0)

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

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);
            }