定义的java整型数组如下,
Integer[] details = {5097, 5098, 5099, 5100, 5101, 5102, 5121, 5122, 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130};
然后使用连接对象将java数组转换为postgres类型数组,如下所示,
connection = (Connection) DriverManager.getConnection(MySQLURL,"postgres","admin");
Array dArray = connection.createArrayOf("INT", details);
之后将 dArray 作为参数传递给 postgres 过程,如下所示,
String simpleProc = "{ call SMS.P_DELETE_DATA("+dArray+") }";
CallableStatement cs = connection.prepareCall(simpleProc);
cs.execute();
我写的postgres过程签名如下,
CREATE FUNCTION SMS.P_DELETE_WORKPLAN_FOR_LESSON(P_LESSONS INT[])
RETURNS VOID AS $$
但是当我运行java代码时它会抛出格式错误的过程/函数调用......
有人建议我解决这个问题。
提前致谢。
最佳答案
Hełm,您应该使用方法而不是在 sql 字符串中设置 Sql 语句的参数。 尝试这样的事情:
connection = (Connection) DriverManager.getConnection(MySQLURL,"postgres","admin");
Array dArray = connection.createArrayOf("INT", details);
String simpleProc = "{ call SMS.P_DELETE_DATA(?) }";
CallableStatement cs = connection.prepareCall(simpleProc);
cs.setArray(1, dArray);
cs.execute();
cs.close();
关于java - 将 java 整数数组作为参数传递给 postgres 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44082108/