我们可以在预处理语句中调用sql函数吗?

时间:2012-08-31 07:07:30

标签: function jdbc prepared-statement

我有一个oracle函数。函数名称是TESTFUNCTION。我使用的代码是

PreparedStatement pStmt = con.prepareStatement("SELECT dbo.TESTFUNCTION(?,?)") ;

我也设置了参数。

ResultSet rs = pStmt.executeQuery();

此代码将产生以下异常

java.sql.SQLSyntaxErrorException: ORA-00923: FROM keyword not found where expected

任何帮助!!

3 个答案:

答案 0 :(得分:0)

当您尝试执行SELECT语句时,会发生此错误,并且您错过或错放了FROM关键字。尝试检查from关键字。

查看here了解详情。

注意:在这种情况下,最好使用Callable Statement而不是预备语句。

在这种情况下,你可以使用callable语句:

String SQL = "{call dbo.TESTFUNCTION(?,?)}";
   cstmt = con.prepareCall (SQL);

答案 1 :(得分:0)

PreparedStatement对SQL查询很有用,而对函数调用则没有用。对于函数调用和存储过程,请使用CallableStatement

答案 2 :(得分:0)

您缺少FROM关键字。改为:

PreparedStatement pStmt = con.prepareStatement("SELECT dbo.TESTFUNCTION(?,?) FROM dual;") ;