OID类型的Postgresql INOUT / OUT参数

时间:2018-08-26 18:42:46

标签: postgresql function jdbc blob

我有以下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来设置该参数的值。但是似乎不可能做到这一点。

0 个答案:

没有答案