118 lines
4.5 KiB
Transact-SQL
118 lines
4.5 KiB
Transact-SQL
if (select top 1 0 from sys.databases where name = 'AnP') is null create database AnP collate Latin1_General_100_CI_AS_SC_UTF8
|
|
go
|
|
use AnP
|
|
|
|
if object_id(N'dbo.common_tables_drop', N'P') is not null drop procedure dbo.common_tables_drop
|
|
go
|
|
create procedure dbo.common_tables_drop as begin set nocount on
|
|
|
|
if object_id(N'dbo.Procedures', N'U') is not null drop table dbo.Procedures
|
|
if object_id(N'dbo.Databases', N'U') is not null drop table dbo.Databases
|
|
|
|
end
|
|
go
|
|
|
|
if object_id(N'dbo.common_tables_create', N'P') is not null drop procedure dbo.common_tables_create
|
|
go
|
|
create procedure dbo.common_tables_create as begin set nocount on
|
|
|
|
declare @table_names varchar(max) = ''
|
|
|
|
if object_id(N'dbo.HistoryModes', N'U') is null begin
|
|
create table dbo.HistoryModes(
|
|
id integer not null identity(1, 1),
|
|
[name] varchar(16) not null,
|
|
[description] varchar(512),
|
|
date_in datetime2 not null constraint df_history_modes_date_in default getdate(),
|
|
date_out datetime2,
|
|
constraint pk_history_modes primary key clustered(id),
|
|
constraint uq_history_modes_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
|
constraint ck_history_modes_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
|
)
|
|
insert into dbo.HistoryModes([name]) values('insert'), ('update'), ('delete'), ('unknown')
|
|
end
|
|
|
|
if object_id(N'dbo.Databases', N'U') is null create table dbo.Databases(
|
|
id integer not null identity(1, 1),
|
|
[name] varchar(32) not null,
|
|
[description] varchar(512),
|
|
date_in datetime2 not null constraint df_databases_date_in default getdate(),
|
|
date_out datetime2,
|
|
constraint pk_databases primary key clustered(id),
|
|
constraint uq_databases_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
|
constraint ck_databases_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
|
)
|
|
|
|
if object_id(N'dbo.Procedures', N'U') is null create table dbo.Procedures(
|
|
id integer not null identity(1, 1),
|
|
[database] integer not null,
|
|
[name] varchar(32) not null,
|
|
[description] varchar(512),
|
|
date_in datetime2 not null constraint df_procedures_date_in default getdate(),
|
|
date_out datetime2,
|
|
constraint pk_procedures primary key clustered(id),
|
|
constraint fk_procedures_database foreign key([database]) references dbo.Databases(id)
|
|
on update no action
|
|
on delete no action,
|
|
constraint uq_procedures_name unique nonclustered ([database] asc, [name] asc) with (fillfactor = 90),
|
|
constraint ck_procedures_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
|
)
|
|
|
|
end
|
|
go
|
|
|
|
if object_id(N'dbo.procedure_get_id', N'P') is not null drop procedure dbo.procedure_get_id
|
|
go
|
|
create procedure dbo.procedure_get_id (
|
|
@database varchar(32),
|
|
@name varchar(32),
|
|
@id integer output
|
|
) as begin set nocount on
|
|
|
|
declare @database_id integer = (select id from dbo.Databases where [name] = @database)
|
|
|
|
if @database_id is null begin
|
|
insert into dbo.Databases ([name]) values (@database)
|
|
set @database_id = scope_identity()
|
|
end
|
|
|
|
set @id = (select id from dbo.Procedures where [database] = @database_id and [name] = @name)
|
|
|
|
if @id is null begin
|
|
insert into dbo.Procedures ([database], [name]) values (@database_id, @name)
|
|
set @id = scope_identity()
|
|
end
|
|
|
|
end
|
|
go
|
|
|
|
execute dbo.common_tables_drop
|
|
execute dbo.common_tables_create
|
|
|
|
if object_id(N'dbo.bw', N'FN') is not null drop function dbo.bw
|
|
go
|
|
create function dbo.bw(
|
|
@number bigint,
|
|
@bits smallint
|
|
) returns bigint begin
|
|
return (case
|
|
when @bits > 0 then @number * power(cast(2 as bigint), @bits)
|
|
when @bits < 0 then @number / power(cast(2 as bigint), -@bits)
|
|
else @number end)
|
|
end
|
|
go
|
|
|
|
if object_id(N'dbo.history_mode_get', N'P') is not null drop procedure dbo.history_mode_get
|
|
go
|
|
create procedure dbo.history_mode_get(
|
|
@insert integer output,
|
|
@update integer output,
|
|
@delete integer output,
|
|
@unknown integer output
|
|
) as begin set nocount on
|
|
set @insert = (select top 1 id from dbo.HistoryModes where [name] = 'insert')
|
|
set @update = (select top 1 id from dbo.HistoryModes where [name] = 'update')
|
|
set @delete = (select top 1 id from dbo.HistoryModes where [name] = 'delete')
|
|
set @unknown = (select top 1 id from dbo.HistoryModes where [name] = 'unknown')
|
|
end
|
|
go |