USP_SMARTFIELD_VALIDATESMARTFIELDDELETE
Validates that the attribute category is not in use.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SMARTFIELDID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_SMARTFIELD_VALIDATESMARTFIELDDELETE
(
@SMARTFIELDID uniqueidentifier
)
with execute as caller
as
declare @TABLENAME nvarchar(128);
declare @QUERYNAME nvarchar(255);
declare @EXPORTDEFINITIONNAME nvarchar(255);
declare @INUSEMESSAGE nvarchar(350);
if @SMARTFIELDID is not null begin
select
@TABLENAME = TABLECATALOG.TABLENAME
from
DBO.TABLECATALOG
inner join dbo.SMARTFIELD on SMARTFIELD.TABLECATALOGID = TABLECATALOG.ID
where
SMARTFIELD.ID = @SMARTFIELDID;
select @QUERYNAME = dbo.UFN_ADHOCQUERY_FIELDISINUSEBY('V_QUERY_' + @TABLENAME,'');
if @QUERYNAME <> '' begin
set @INUSEMESSAGE = 'The smart field cannot be deleted because it is being used by the ''' + @QUERYNAME + ''' query.'
raiserror(@INUSEMESSAGE,13,1);
return 1;
end
select @EXPORTDEFINITIONNAME = dbo.UFN_EXPORTDEFINITION_FIELDISINUSEBY('V_QUERY_' + @TABLENAME);
if @EXPORTDEFINITIONNAME <> '' begin
set @INUSEMESSAGE = 'The smart field cannot be deleted because it is being used by the ''' + @EXPORTDEFINITIONNAME + ''' export definition.'
raiserror(@INUSEMESSAGE,13,1);
return 1;
end
if OBJECT_ID('dbo.USP_GIVINGLEVELPROGRAM_VALIDATESMARTFIELDDELETE', 'P') is not null
begin
exec dbo.USP_GIVINGLEVELPROGRAM_VALIDATESMARTFIELDDELETE @SMARTFIELDID
end
if OBJECT_ID('dbo.USP_SOURCEANALYSISRULE_VALIDATESMARTFIELDDELETE', 'P') is not null
begin
exec dbo.[USP_SOURCEANALYSISRULE_VALIDATESMARTFIELDDELETE] @SMARTFIELDID
end
if OBJECT_ID('dbo.USP_MKTASKLADDER_VALIDATESMARTFIELDDELETE', 'P') is not null
begin
exec dbo.[USP_MKTASKLADDER_VALIDATESMARTFIELDDELETE] @SMARTFIELDID
end
--Checking for smart fields used on warehouse queries
declare @OLAPDATASOURCEID uniqueidentifier;
declare @MARTKEY nvarchar(50);
declare OLAPDATASOURCES cursor local fast_forward for
select ID, MARTKEY
from dbo.OLAPDATASOURCE
open OLAPDATASOURCES
fetch next from OLAPDATASOURCES into @OLAPDATASOURCEID, @MARTKEY;
while(@@FETCH_STATUS = 0)
begin
select @QUERYNAME = dbo.UFN_ADHOCQUERY_FIELDISINUSEBY('v_QUERY_' + @MARTKEY + '_' + @TABLENAME,'')
if isnull(@QUERYNAME, '') != ''
begin
set @INUSEMESSAGE = 'The smart field cannot be deleted because it is being used by the ''' + @QUERYNAME + ''' query.'
raiserror (@INUSEMESSAGE, 13, 1);
return 1;
end
fetch next from OLAPDATASOURCES into @OLAPDATASOURCEID, @MARTKEY;
end
close OLAPDATASOURCES
deallocate OLAPDATASOURCES
end