22.11.2024
Эффективная Навигация М2М
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Скрипт создания sql-кода экспорта/импорта зоны по имени
logoffДата: Среда, 18.07.2012, 17:25 | Сообщение # 1
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
Проверен на SQL 2005 Standart, но должно вроде выгружать и с MSDE
Code

USE [bn_patp_dob]
GO

/****** Object:  StoredProcedure [dbo].[CyberFleet_export_ts_at]    Script Date: 07/18/2012 17:17:09 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- изменения 2012-06-07 добавлена передача колонок норм пробега для ТС
-- =============================================
-- Author:  <Бондарь Михаил>
-- Create date: 18/07/2012
-- Description:    скрипт для экспорт данных о зоне в код sql
-- Зона идентифицируется именем, если в БД получателе активная указанная зона уже есть - код будет остановлен
-- выгружаются только активные, не привязанные к ТС зоны. Данные о привязке к группе не выгружаются
-- =============================================
Create PROCEDURE [dbo].[CyberFleet_export_zone_as_script]  
  (
  @ZoneName varchar(256)-- имя зоны для переноса
  ,@CF_DB_name varchar(20)='[BN]' -- имя базы данных клиента
  )  
AS
BEGIN
  -- SET NOCOUNT ON added to prevent extra result sets from
  -- interfering with SELECT statements.
  SET NOCOUNT ON;

declare @zoneID int
declare @Long varchar(20),@Lat varchar(20),@orderBy varchar(5)

select @zoneID=ZoneID from bn.dbo.FLEET_Zone as Z where Name=@ZoneName and ZoneActive=1 and ZoneIsDynamic=0
if @zoneID is null begin print 'Ошибка в поиске активной зоны с указанным именем!' return end

set nocount on

create table #temp (string varchar(500))

insert into #temp
values ('use '+@CF_DB_name)
insert into #temp
values ('')
insert into #temp
values ('declare @ZoneName varchar(256), @zoneID int')
insert into #temp
values ('set @zoneName='''+@ZoneName+'''')
insert into #temp
values ('select @zoneID=ZoneID from dbo.FLEET_Zone as Z where Name=@ZoneName and ZoneActive=1 and ZoneIsDynamic=0')
insert into #temp
values ('if @zoneID is not null begin print ''Зона уже существует, создание не возможно'' return end')
insert into #temp
values ('')

insert into #temp
values ('insert into dbo.FLEET_Zone ([Name],[Type],[Width],[Color],[GlobalType],[ObjectID],[GroupID],[ZoneActive]')
insert into #temp
values (',[Integrated],[Comment],[IsTemporary],[DeleteDate],[ZoneIsDynamic],[TiedObjectID],[ZoneMaxSpeed])')
insert into #temp
select 'Values ('''+@ZoneName+''','+CAST(type as varchar(10))+','+str(Width,15,6)+','
+cast(Color as varchar(16))+','+cast(GlobalType as varchar(16))+',null,null,1,'
+'0,'''+Comment+''',0,null,0,null,'+cast(ZoneMaxSpeed as varchar(16))
+')' from bn.dbo.FLEET_Zone where zoneid=@zoneID
insert into #temp
values ('set @ZoneID=@@IDENTITY')

insert into #temp
values ('-- Описание зоны')

declare cur cursor local for
select str(Long,12,6),str(Lat,12,6),cast(OrderBy as varchar(5)) from bn.dbo.FLEET_ZoneDescript where ZoneID=@ZoneID
order by OrderBy

open cur
while 1=1 begin
  fetch next from cur into @long,@lat,@OrderBy
  if @@FETCH_STATUS!=0 break
  insert into #temp
  values ('insert into dbo.FLEET_ZoneDescript (ZoneID,Long,Lat,OrderBy)')
  insert into #temp
  values ('values (@ZoneID,'+@long+','+@lat+','+@Orderby+')')
   
end

close cur

deallocate cur

select * from #temp

drop table #temp
END

GO



Для вызова:
Code
DECLARE @RC int
DECLARE @ZoneName varchar(256)
DECLARE @CF_DB_name varchar(20)

-- TODO: задайте здесь значения параметров.

EXECUTE @RC = [bn_patp_dob].[dbo].[CyberFleet_export_zone_as_script]  
    @ZoneName='Название зоны'
   ,@CF_DB_name='BN' -- имя базы данных CyberFleet получателя
GO


Процедура возвращает запрос, содержащий для указанной зоны строки SQL кода для ее создания.
Выполнив данный запрос на удаленном сервере получите новую зону.
Ограничения:
1. Зона ищется по названию - если зона найдена - скрипт будет остановлен (т.е. не обновляет)
2. Зоны выгружаются только Активные, при выгрузке не будет привязки к ТС, и группе
 
orabinДата: Понедельник, 13.08.2012, 16:59 | Сообщение # 2
Группа: Проверенные
Сообщений: 3
Репутация: 0
Статус: Offline
а как можно автоматически загрузить зоны в базу? из файла определенного формата (txt, xls, xml)? кукую процедуру нужно вызвать?
 
logoffДата: Среда, 15.08.2012, 10:29 | Сообщение # 3
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
готовой процедуры в составе нет. нужно писать
 
orabinДата: Среда, 15.08.2012, 11:13 | Сообщение # 4
Группа: Проверенные
Сообщений: 3
Репутация: 0
Статус: Offline
ну хорошо
просто нужно 1 зону-окружность не ручками..имеем ее название и две координаты..
как занести не ручками?
куда все это ложится?
 
logoffДата: Среда, 15.08.2012, 23:11 | Сообщение # 5
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
Две таблицы отвечают за зоны
fleet_zone, FLEET_ZoneDescript
описание тут
http://bnc.ucoz.net/publ....5-1-0-8
 
  • Страница 1 из 1
  • 1
Поиск:

LogOff © 2024
Сайт создан в системе uCoz Рейтинг GPS Клуба. GPS навигаторы. GPS мониториг. GPS трекеры. ГЛОНАСС