Если дать немного больше контекста и использовать блок кода, этот ответ улучшится.
а по теме:
Строковые литералы и экранирующие символы в postgresqlВот моя ошибка:
ERROR: type "e" does not exist
Вот мой запрос:
SELECT *
FROM dblink('host=theHostName port=1234 dbname=theDBName user=theUser password=thePassword',
E'SELECT field_1,
CASE WHEN field_2 IS NOT NULL
THEN \'inactive\' ELSE \'active\'
END AS field_status
FROM the_table
')
AS linkresults(field_1 varchar(20),field_2 varchar(8))
Если я использую двойные кавычки, удалите обратную косую черту для одинарных кавычек и удалите E перед оператором SELECT
SELECT *
FROM dblink('host=theHostName port=1234 dbname=theDBName user=theUser password=thePassword',
"SELECT field_1,
CASE WHEN field_2 IS NOT NULL
THEN 'inactive' ELSE 'active'
END AS field_status
FROM the_table
")
AS linkresults(field_1 varchar(20),field_2 varchar(8))
Я получаю это:
NOTICE: identifier "SELECT ..." will be truncated
И я также получаю ОШИБКУ, поскольку мой запрос был усечен.
Я уже сбежал с dblink, как это раньше, так есть ли настройки сервера или что-то, что мне нужно настроить?
Я знаю, что запрос работает нормально, если я запускаю его на самом сервере sql, но не с помощью dblink. есть идеи?
Postgres версия 8.4