jdbc调用存储过程为什么语句不能加分号

2025-03-24 16:54:15
推荐回答(3个)
回答(1):

如果你在程序里面写sql,就不要加分号,在程序里面编译器会把分号当做sql本身的一部分,所以会报错 如果是在查询工具里面(比如plsql),这个时候可以加上分号,在工具里面分号是个分隔符,看到分号就标志着本条sql语句结束了; 当然不加也可以,在工具里面看不到分号就认为本条sql没有结束。 比如:你写了两条sql,但是没有用分号隔开,此时,工具会当做一条来执行,只不过会报错而已。

回答(2):

jdbc中对于执行存储过程支持是通过CallableStatement接口来实现的,该接口的实现类实例来调用并执行存储过程。“public interface CallableStatementextends PreparedStatement”。Connection类提供了创建CallableStatement对象的方法以调用数据库存储过程。//CallableStatement prepareCall(String sql) throws SQLException。//注意:调用存储过的字符串参数格式为形如:"{call p_Register(?,?,?)}",1、注意大括号,2、注意使用call来调用存储过程,3、存储过程参数使用括号括起来,4、同样支持占位符"?",5、语句后没有分号。

回答(3):

conn.prepareCall("{call sp_get_goods_by_id(?)}");
cs.setObject(1, uid); //uid应该是BigInteger吧,字符串与bigint类型不匹配