Postgresql INOUT / OUT параметр типа OID - PullRequest
0 голосов
/ 26 августа 2018

У меня есть следующая таблица 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.Я зарегистрировал параметр OUT типа BLOB для paramBlobOut и paramBlobInOut .Когда я выполняю вызов функции, я получаю исключение

"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 жалуется, что я зарегистрировал параметр типа Blob для BIGINT.

Я знаю, что сам OID имеет тип BIGINT.

Мой вопрос: нельзя ли иметь параметр OUT / INOUT типа OID?К вашему сведению, похоже, что значение, которое я передаю в функцию через параметр INOUT, вставляется.Там я звоню setBlob, чтобы установить значение этого параметра.Но, похоже, обратное невозможно.

...