我有以下postgresql表。它有几个条目。
CREATE TABLE IF NOT EXISTS BlobTable(
row_id INTEGER,
blob_type OID
);
我也有以下功能。
CREATE FUNCTION TestOutInOutParamsBlob (IN idOut INTEGER, IN idInOut INTEGER, OUT paramBlobOut OID, INOUT paramBlobInOut OID) AS '
BEGIN
SELECT blob_type INTO paramBlobOut FROM BlobTable where row_id = idOut;
INSERT INTO BlobTable (row_id, blob_type) VALUES (idInOut, paramBlobInOut);
SELECT blob_type INTO paramBlobInOut FROM BlobTable where row_id = idInOut;
END'
LANGUAGE plpgsql;
我正在通过JDBC调用此函数。我已经为 paramBlobOut 和 paramBlobInOut 注册了BLOB类型的OUT参数。执行函数调用时,出现异常
"org.postgresql.util.PSQLException: A CallableStatement function was executed and the out parameter 1 was of type java.sql.Types=-5 however type java.sql.Types=2004 was registered."
即postgresql驱动程序抱怨我已经为BIGINT注册了Blob类型参数。
我知道OID本身是BIGINT类型。
我的问题是,不可能有OID类型的OUT / INOUT参数吗?
仅供参考,看来我通过INOUT参数传递给函数的值已插入。我在这里调用setBlob
来设置该参数的值。但是似乎不可能做到这一点。