SQLExceptionHelper Неверный синтаксис ввода для целого числа (PL / pg SQL) - PullRequest
1 голос
/ 04 февраля 2020

Я хочу получить целое число из запроса к базе данных:

SELECT CAST(concat('id_',substr_of_jointable) AS INTEGER) into integervalue 
  FROM books_authors where id_books = booksvalue 
  ORDER BY id_books DESC 
  LIMIT 1;

subsr_of_jointable - это ТЕКСТ со значением authors. Однако я всегда получаю сообщение об ошибке:

ОШИБКА org.hibernate.engine.jdb c .spi.SqlExceptionHelper - ОШИБКА: неверный синтаксис ввода для целого числа: "id_authors"
Wobei: SQL оператор "SELECT CAST (concat ('id _', substr_of_jointable) AS INTEGER) FROM books_authors, где id_books = books_value ORDER BY id_books DES C LIMIT 1"
PL / pg SQL функция books_ins_trig_pro c () строка 125 на SQL заявление

У кого-нибудь есть идеи, почему? Столбец id_books id_authors является целочисленным значением в базе данных.

1 Ответ

1 голос
/ 04 февраля 2020

Предполагая, что вы пытаетесь построить динамический c запрос внутри функции PL / pg SQL, вам может потребоваться взглянуть на этот подход.

Пример данных

CREATE TABLE t (id_authors INT);
INSERT INTO t VALUES (1);

Функция

CREATE OR REPLACE FUNCTION myfunction(TEXT) RETURNS INT 
LANGUAGE 'plpgsql' AS $BODY$
DECLARE i INT;
BEGIN
  EXECUTE 'SELECT id_'|| $1 ||' FROM t LIMIT 1;' INTO i;
  RETURN i;
END;
$BODY$;

Этот пример только показывает, как можно объединить строки для создания имени столбца внутри динамического c запроса.

Вызов функции

SELECT * FROM myfunction('authors');

 myfunction 
------------
          1
(1 Zeile)

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...