Страница 1 из 1

Тип данных параметров в запросах

Добавлено: Ср 13 фев 2019 16:28
AndreyD
Здравствуйте.
Вопрос по использованию параметров в TPgQuery.
Почему-то при подстановке параметров в список выбираемых столбов запроса тип данных столбца всегда получается text, например:

Код: Выделить всё

SELECT :TEST AS test_col
Хотя тип данных для параметра задаю Integer.
Приходится делать явное приведение типа, что не очень удобно:

Код: Выделить всё

SELECT :TEST::integer AS test_col
Более того, без явного приведения типа возникает ошибка (не существует оператор text = integer) в выражениях типа:

Код: Выделить всё

SELECT (CASE :TEST WHEN 1 THEN 123 ELSE 456 END) AS test_col
,
опять-таки приходится писать

Код: Выделить всё

SELECT (CASE :TEST::integer WHEN 1 THEN 123 ELSE 456 END) AS test_col
.

Это баг или же в PostgreSQL по-другому никак?

Re: Тип данных параметров в запросах

Добавлено: Пт 15 фев 2019 17:30
MaximG
Описываемое Вами поведение не является ошибкой, т.к. при использовании первого из приведенных Вами запросов сервер БД возвращает тип данных SQL_PG_TEXT для поля test_col. Попробуйте использовать PostgreSQL Protocol 2.0 :
PgConnection.ProtocolVersion := pv20;

Re: Тип данных параметров в запросах

Добавлено: Пн 18 фев 2019 08:40
AndreyD
Похоже, на самом деле мне нужно было PgQuery.Options.UseParamTypes := True; .
Надо было мне внимательнее смотреть.

Re: Тип данных параметров в запросах

Добавлено: Вт 19 фев 2019 08:34
MaximG
Мы рады, что Вы нашли решение проблемы. Обращайтесь к нам по любым вопросам использования PgDAC