我正在使用postgres 12并编写了以下程序:
CREATE OR REPLACE PROCEDURE reduceStock(id INTEGER, soldQuantity INTEGER)
LANGUAGE plpgsql AS
$$
BEGIN
UPDATE inventory SET ProductStockAmount = ProductStockAmount - soldQuantity WHERE ProductID = id;
END;
$$;
如果我在命令行上打开psql并运行 call reduceStock(1,1);
但是,从我的java程序调用它如下:
CallableStatement stmt = conn.prepareCall("{call reduceStock(?, ?)}");
stmt.setInt(1, productID);
stmt.setInt(2, quantity);
stmt.execute();
显示以下错误:
我试过的
跑步 call reduceStock(1,1);
从psql客户端-完美地工作
删除数据库并重新开始查看是否缓存了某个旧定义-不起作用
不同的资本,不同的间隔 call
如有任何意见,我们将不胜感激
1条答案
按热度按时间w1jd8yoj1#
您需要删除花括号,这是用于调用过程的jdbc转义。但因为postgres有自己的
call
命令,则不需要它们(并与jdbc转义冲突)。