Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> query_to_xml в where не работает поле типа char, where data='130809' не понимает прога 
:(
    Опции темы
izver84
Дата 4.9.2013, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: нет
Всего: 1



Добрый день.

Есть базе представление view_otgruz (datd,kpot,suma,...,nd) 

В нем находятся данные за 2 года.

Мне надо скопировать в xml файл период (период задается функцией).

Для пробы (не в функции), я создал такой запрос 

Код

select query_to_xml ('select datd,kpot,suma,...,nd from view_otgruz',,true,false,'') 

 
Это работает.

Но вот такой запрос 
Код

select query_to_xml ('select datd,kpot,suma,...,nd from view_otgruz where datd between '130801' and '130802'',true,false,'') 


Ругается
Код

ERROR:  syntax error at or near "130801"


Как-то обойти можно?

Создавать временную таблицу не интересно.


--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
Zloxa
Дата 4.9.2013, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 3
Всего: 161



izver84, лидералы кавычить вас в школе не учили?
Код

select query_to_xml ('select datd,kpot,suma,...,nd from view_otgruz where datd between ''130801'' and ''130802''',true,false,'') 



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
izver84
Дата 4.9.2013, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: нет
Всего: 1



Цитата(Zloxa @ 4.9.2013,  10:35)
izver84, лидералы кавычить вас в школе не учили?
Код

select query_to_xml ('select datd,kpot,suma,...,nd from view_otgruz where datd between ''130801'' and ''130802''',true,false,'') 

Согласен туплю
Но проблема в том, что вместо '130801'  будет переменная.

Код

c_datn=to_char(now()- interval '2 month','yymmdd');
c_datk=to_char(now(),'yymmdd');


select query_to_xml ('select datd,kpot,suma,...,nd from view_otgruz where datd between ''c_datn'' and ''c_datk''',true,false,'') 


в этом случае  так  выглядит результат
Код

<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</table>


запрос
Код

select datd,kpot,suma,...,nd from view_otgruz where datd between c_datn and c_datk

работает

пробовал так

Код

select query_to_xml ('select datd,kpot,suma,...,nd from view_otgruz where datd between '||c_datn||' and '||c_datk||'',true,false,'') 


не работает




--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
Zloxa
Дата 4.9.2013, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 3
Всего: 161



Мой ответ после ваших уточнений не изменился - внимательно кавычим литералы.
Код

select query_to_xml ('select datd,kpot,suma,...,nd from view_otgruz where datd between '''||c_datn||''' and '''||c_datk||'''',true,false,'') 


Это сообщение отредактировал(а) Zloxa - 4.9.2013, 13:41


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
izver84
Дата 4.9.2013, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: нет
Всего: 1



Цитата(Zloxa @ 4.9.2013,  13:36)
Мой ответ после ваших уточнений не изменился - внимательно кавычим литералы.
Код

select query_to_xml ('select datd,kpot,suma,...,nd from view_otgruz where datd between '''||c_datn||''' and '''||c_datk||'''',true,false,'') 

ошибка 
Код

ERROR:  there is no parameter $1
LINE 1: ...d FROM xml_otgruz_export where datd between '''|| $1 ||''' a...


код функции
Код

- Function: xml_otgruz_export()

-- DROP FUNCTION xml_otgruz_export();

CREATE OR REPLACE FUNCTION xml_otgruz_export()
  RETURNS text AS
$BODY$
DECLARE
  c_qwery text;
  c_datn char(6);
  c_datk char(6);
BEGIN
c_datk=to_char(now(),'yymmdd');
c_datn=to_char(now()-interval '1 day','yymmdd');

copy 
(
SELECT query_to_xml
('SELECT * FROM xml_otgruz_export where datd between ''c_datn'' and ''c_datk''', true, false, '')) 
 to '/home/jlc/export_xml/export_otgruz.xml';

return  c_datk;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION xml_otgruz_export()
  OWNER TO postgres;




--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1201 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.