![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Всем привет! 
		
	
		
		
		
		
		
	
		
		
	
	
	Возникла проблема с использованием запросов в TFDQuery. Когда имя таблицы содержит два символа '$', то TFDQuery не отображает список параметров в запросе. Вот пример (таблица vdata."wares$rules$link"). Если использовать макросы по подмене текста, то работает. Но не хочется такие элементарные вещи оборачивать через макросы. Код: 
	with tjWLL   as (select
                      wrl.fldidxwarerule as fldidxwarerule,
                      json_agg(wll.*)    as "WARESRULESLINKS"
                  from
                      vdata."wares$rules"                 wrl
                      inner join vdata."wares$rules$link" wll on (wrl.fldidxwarerule = wll.fldidxwarerule)
                  where
                          (wll.fldidxwarerule = any(:fldidxwarerule) or (case when :fldidxwarerule = '{}' then True else False end))
                      and :IsWLL
                  group by
                      wrl.fldidxwarerule
                 ),
tjWRL        as (select
                      wrl.*,
                      wll."WARESRULESLINKS"
                  from
                      vdata."wares$rules" wrl
                      left  join tjWLL    wll on (wrl.fldidxwarerule = wll.fldidxwarerule)
                  where
                         wrl.fldidxwarerule = any(:fldidxwarerule)
                      or case when :fldidxwarerule = '{}' then True else False end
                 )
select
    json_build_object('WARESRULES', to_json(tjWRL)) as "WARESRULES"
from
    tjWRLP.S. Переименовывать таблицы - уже поздно, живой проект.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Видимо, какая-то специфика парсинга запроса. 
		
	
		
		
		
		
		
	
		
		
	
	
	Варианты обхода: 1. Создать параметры "руками". 2. Создать вью, а уже из нее селектить с параметрами.  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 1. Даже при ручном создании - ругается 2. Ой как не люблю вьюшки, но наверное придется. Спасибо! P.S. Может кто-то еще предложит варианты ![]()  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 А проверь-ка на простом запросе, что такая реакция именно на 2 и более символов '$' в имени таблицы. А то есть еще подозрение, что тут скорее на использование одного и того же параметра несколько раз. 
		
	
		
		
		
		
		
	
		
		
	
	
	ЗЫ. Ну и сами запросы, как мне кажется, можно упростить. Для начала, можно избавиться от case'ов. Они, как мне кажется, просто не нужны. Код: 
	case when :value = '{}' then true else false endКод: 
	:value = '{}'Код: 
	any(:value) Если только ты не пихаешь в параметр запрос в текстовом виде, но такое тоже не должно работать.  |