Начало » Использование СУБД » Firebird, HQbird, InterBase » select на удаленной базе (execute statement - как правильно приготовить) 
	
		
		
			| select на удаленной базе [сообщение #5701] | 
			Tue, 12 November 2024 20:34   | 
		 
		
			
				
				
				
					
						  
						GrigoryFomin
						 Сообщений: 91 Зарегистрирован: April 2023 
						
					 | 
					Member  | 
					 | 
		 
		 
	 | 
 
	
		Доброго дня. 
Помогите, плз с проблемой. 
Необходимо выполнить SELECT на другой базе и получить результат. 
Пробую сделать так: 
execute block as
declare variable poss varchar(1000);
declare variable vall numeric (16,0);
begin
for execute statement
'select row_number() over (order by sum(pricetowdisc) desc) || '' место - '' || badgename || '' [Б+'' || caname||'']'' as poss, sum(pricetowdisc) as total from opers o
join contragents c on caid=opcaidown
join emps e on e.empid=o.empid
where opdate between dateadd(day,-30,current_timestamp) and current_timestamp and optype in (100,101,102,150,151,152)
group by caname,badgename
order by total desc'
WITH AUTONOMOUS TRANSACTION
ON EXTERNAL 'd:\basa\DBSERVER.FDB'
into :poss, :vall
do
begin
end
  
но выдает ошибку, что неожиданный конец команды. селект выдает множество строк при этом. 
Пните в нужном направлении, плз
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	
		
		
			| Re: select на удаленной базе [сообщение #5712 является ответом на сообщение #5706] | 
			Wed, 13 November 2024 20:10    | 
		 
		
			
				
				
				
					
						  
						sim_84
						 Сообщений: 355 Зарегистрирован: June 2022 
						
					 | 
					Senior Member  | 
					 | 
		 
		 
	 | 
 
	
		Открой для себя альтернативные кавычки для строковых литералов и сразу станет легче 
 
execute block as
  declare variable poss varchar(1000);
  declare variable vall numeric (16,0);
begin
  for
    execute statement
Q'{
select
  row_number() over (order by sum(pricetowdisc) desc) || ' место - ' || badgename || ' [Б+' || caname|| ']' as poss,
  sum(pricetowdisc) as total
from
  opers o
  join contragents c on caid=opcaidown
  join emps e on e.empid=o.empid
where opdate between dateadd(day, -30,current_timestamp)
  and current_timestamp and optype in (100,101,102,150,151,152)
group by caname, badgename
order by total desc
}'
    WITH AUTONOMOUS TRANSACTION
    ON EXTERNAL 'd:\basa\DBSERVER.FDB'
    into :poss, :vall
  do
  begin
  end
end
 
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
	
		
		
			| Re: select на удаленной базе [сообщение #5713 является ответом на сообщение #5712] | 
			Thu, 14 November 2024 05:29    | 
		 
		
			
				
				
				
					
						  
						fraks
						 Сообщений: 152 Зарегистрирован: June 2022  Географическое положение: Новосибирск
						
					 | 
					Senior Member  | 
					 | 
		 
		 
	 | 
 
	
		sim_84 писал(а) Thu, 14 November 2024 00:10Открой для себя альтернативные кавычки для строковых литералов и сразу станет легче 
 
execute block as
  declare variable poss varchar(1000);
  declare variable vall numeric (16,0);
begin
  for
    execute statement
Q'{
select
 
А это с какой версии появилось (альтернативные кавычки)? 
		
		
		[Обновления: Thu, 14 November 2024 05:30] Известить модератора  
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |   
Переход к форуму:
 
 Текущее время: Tue Nov 04 08:09:10 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.00874 секунд 
 |