USP_COAUPDATECREATE_CREATETABLE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@COAUPDATEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_COAUPDATECREATE_CREATETABLE
(
@COAUPDATEID uniqueidentifier
)
with execute as owner
as
begin
set nocount on;
declare @TABLENAME nvarchar(128) = 'COAUPDATECREATE_' + replace(cast(@COAUPDATEID as nvarchar(36)), '-', '_');
declare @SQL nvarchar(max);
begin try
-- if the table to hold the output is not yet created, then create it
if not exists(select 1 from [INFORMATION_SCHEMA].[TABLES] where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @TABLENAME)
begin
declare @USECOMPRESSION bit = (case when serverproperty('engineedition') = 3 then 1 else 0 end);
set @SQL = 'create table dbo.[' + @TABLENAME + '](' + char(13) +
' [ADDRESSID] uniqueidentifier not null,' + char(13) +
' [TITLE] nvarchar(100) null,' + char(13) +
' [ORGNAME] nvarchar(154) null,' + char(13) +
' [FIRSTNAME] nvarchar(50) null,' + char(13) +
' [MIDDLENAME] nvarchar(50) null,' + char(13) +
' [LASTNAME] nvarchar(100) null,' + char(13) +
' [SUFFIX] nvarchar(100) null,' + char(13) +
' [LINE1] nvarchar(50) null,' + char(13) +
' [LINE2] nvarchar(50) null,' + char(13) +
' [CITY] nvarchar(28) null,' + char(13) +
' [STATE] nvarchar(100) null,' + char(13) +
' [POSTCODE] nvarchar(12) null, ' + char(13) +
' [CONSTITUENTID] uniqueidentifier not null' + char(13) +
') on [DEFGROUP]' + char(13) +
'create clustered index IX_' + @TABLENAME + '_CONSTITUENTID on dbo.[' + @TABLENAME + ']([CONSTITUENTID])' + char(13) +
'create nonclustered index IX_' + @TABLENAME + '_ADDRESSID on dbo.[' + @TABLENAME + ']([ADDRESSID]) '
if @USECOMPRESSION = 1
set @SQL += ' WITH (DATA_COMPRESSION = PAGE) ';
exec (@SQL);
/* Grant select, insert, update, and alter rights on the new table */
set @SQL = 'grant select, insert, update, alter, delete on dbo.[' + @TABLENAME + '] to BBAPPFXSERVICEROLE ';
exec (@SQL);
end
If not exists (select 1 from [INFORMATION_SCHEMA].COLUMNS where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @TABLENAME and [COLUMN_NAME] = 'CONSTITUENTID')
begin
set @SQL = 'drop table dbo.[' + @TABLENAME + ']' + char(13) +
'create table dbo.[' + @TABLENAME + '](' + char(13) +
' [ADDRESSID] uniqueidentifier not null,' + char(13) +
' [TITLE] nvarchar(100) null,' + char(13) +
' [ORGNAME] nvarchar(154) null,' + char(13) +
' [FIRSTNAME] nvarchar(50) null,' + char(13) +
' [MIDDLENAME] nvarchar(50) null,' + char(13) +
' [LASTNAME] nvarchar(100) null,' + char(13) +
' [SUFFIX] nvarchar(100) null,' + char(13) +
' [LINE1] nvarchar(50) null,' + char(13) +
' [LINE2] nvarchar(50) null,' + char(13) +
' [CITY] nvarchar(28) null,' + char(13) +
' [STATE] nvarchar(100) null,' + char(13) +
' [POSTCODE] nvarchar(12) null, ' + char(13) +
' [CONSTITUENTID] uniqueidentifier not null' + char(13) +
') on [DEFGROUP]' + char(13) +
'create clustered index IX_' + @TABLENAME + '_CONSTITUENTID on dbo.[' + @TABLENAME + ']([CONSTITUENTID])' + char(13) +
'create nonclustered index IX_' + @TABLENAME + '_ADDRESSID on dbo.[' + @TABLENAME + ']([ADDRESSID])'
if @USECOMPRESSION = 1
set @SQL += ' WITH (DATA_COMPRESSION = PAGE)';
exec (@SQL);
/* Grant select, insert, update, and alter rights on the new table */
set @SQL = 'grant select, insert, update, alter, delete on dbo.[' + @TABLENAME + '] to BBAPPFXSERVICEROLE';
exec (@SQL);
end
else
begin
set @SQL = 'truncate table dbo.[' + @TABLENAME + '];';
exec (@SQL);
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end