У меня есть следующая таблица 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
, чтобы установить значение этого параметра.Но, похоже, обратное невозможно.