Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запрос с параметрами / 10 сообщений из 10, страница 1 из 1
16.02.2007, 00:35
    #34335220
Евгений_СТ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
Подскажите пожалуйста, как написать запрос с параметрами?

В других СУБД я из клиентского приложения отправлял запрос примерно такого вида:

Код: plaintext
select * from "TARIF" where "TARIF">:tar;

вместо параметра :tar при отправке запроса подставляется какое-то конкретное значение. Но Постгрес ругается на такой синтаксис, говорит:

Error while executing the query;
ERROR: invalid input syntax for type numeric: ""

Я только-только начал изучать Постгрес, подскажите, в какую сторону копать?
...
Рейтинг: 0 / 0
16.02.2007, 08:35
    #34335400
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
копай здесь
Код: plaintext
select * from "TARIF" where "TARIF">$ 1 ;
...
Рейтинг: 0 / 0
16.02.2007, 10:51
    #34335745
Евгений_СТ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
Ссылка ведёт на "Chapter 28. libpq - C Library". Немного не то.

Такой запрос - select * from "TARIF" where "TARIF"> $1 ; я уже пробовал. Не проходит, выдаёт сообщение -

Error while executing the query;
ERROR: there is no parameter $1

Правда, проходит вот такой вариант -

Код: plaintext
select * from "TARIF" where "NAME" like :NN;

и с любым другим полем строкового типа. А если пытаюсь параметризировать числовое или дату, то опять выдаёт - ERROR: invalid input syntax for type numeric: ""

Неужели это можно обойти только каждый раз собирая заново всю строку с запросом?
...
Рейтинг: 0 / 0
16.02.2007, 11:05
    #34335804
BlackDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
Возможно, надо сюда посмотреть?
http://www.postgresql.org/docs/8.2/interactive/sql-prepare.html
...
Рейтинг: 0 / 0
16.02.2007, 12:33
    #34336156
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
Евгений_СТ
вместо параметра :tar при отправке запроса подставляется какое-то конкретное значение. Но Постгрес ругается на такой синтаксис, говорит:

Error while executing the query;
ERROR: invalid input syntax for type numeric: ""

Я только-только начал изучать Постгрес, подскажите, в какую сторону копать?
Было бы неплохо указать клиента из которого этого вызывается.
Например в делфах такой запрос - прекрастно работает. А в psql - нужно препарить.
...
Рейтинг: 0 / 0
16.02.2007, 14:17
    #34336573
Евгений_СТ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
Клиент - ЛАБ, Линтер Аппликейшен Билдер. Если из дельфей такой запрос работает нормально, значит это наверное сам ЛАБ не может нормально подставить параметры.

Интересно, но ведь такой запрос "select * from table1 where field1 = :FF;" должен по идее работать и в административной консоли? Но не работает, говорит "ошибка синтаксиса".
...
Рейтинг: 0 / 0
16.02.2007, 14:59
    #34336741
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
Евгений_СТКлиент - ЛАБ, Линтер Аппликейшен Билдер. Если из дельфей такой запрос работает нормально, значит это наверное сам ЛАБ не может нормально подставить параметры.

Интересно, но ведь такой запрос "select * from table1 where field1 = :FF;" должен по идее работать и в административной консоли? Но не работает, говорит "ошибка синтаксиса".
Административная консоль это что?

ЗЫ Есть подозрение, что у Вас СУБД не постгрес, а Линтер. Может там все по-другому.
...
Рейтинг: 0 / 0
16.02.2007, 16:13
    #34337070
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
Евгений_СТПодскажите пожалуйста, как написать запрос с параметрами?

В других СУБД я из клиентского приложения отправлял запрос примерно такого вида:

Код: plaintext
select * from "TARIF" where "TARIF">:tar;

вместо параметра :tar при отправке запроса подставляется какое-то конкретное значение. Но Постгрес ругается на такой синтаксис, говорит:

Error while executing the query;
ERROR: invalid input syntax for type numeric: ""

Я только-только начал изучать Постгрес, подскажите, в какую сторону копать?

А если так попробовать
Код: plaintext
1.
select * from "TARIF" where "TARIF">CAST(:tar AS NUMERIC);
...
Рейтинг: 0 / 0
16.02.2007, 20:50
    #34337804
Крупский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
пишите запрос на сервере???
...
Рейтинг: 0 / 0
17.02.2007, 02:11
    #34338041
Евгений_СТ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметрами
Нет, всё равно не проходит ни один из этих вариантов. Наверное, это особенности самой среды ЛАБ при работе именно с Постгрес - поскольку с другими СУБД, например МС-СКЛ или Сайбейз, такой синтаксис параметра ":TAR" нормально проходит.

Пока что буду полностью собирать на клиенте строку запроса, подставляя конкретные значения вместо параметров. Воспользуюсь предложенным BlackDan вариантом с оператором -

PREPARE name [ (datatype [, ...] ) ] AS statement

Спасибо всем ответившим.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запрос с параметрами / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]