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
|
|
| |