USP_IMPORTSELECTIONPROCESS_CHECKFORDELETEDIDS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@IMPORTTABLENAME | nvarchar(128) | IN | |
@EXCEPTIONCODE | tinyint | IN | |
@IDFIELDNAME | nvarchar(128) | IN | |
@IDFIELDDATATYPE | nvarchar(128) | IN | |
@BASETABLENAME | nvarchar(128) | IN | |
@BASETABLEIDFIELDNAME | nvarchar(128) | IN | |
@ALTERNATELOOKUPIDTYPECODEID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.[USP_IMPORTSELECTIONPROCESS_CHECKFORDELETEDIDS]
(
@IMPORTTABLENAME nvarchar(128),
@EXCEPTIONCODE tinyint,
@IDFIELDNAME nvarchar(128),
@IDFIELDDATATYPE nvarchar(128),
@BASETABLENAME nvarchar(128),
@BASETABLEIDFIELDNAME nvarchar(128),
@ALTERNATELOOKUPIDTYPECODEID uniqueidentifier = null
)
with execute as owner -- guarantees that BBAppFxServiceRole can check IDs in @BASETABLENAME even if it does not have SELECT permission to the table
as begin
set nocount on;
declare @SQL nvarchar(max);
declare @PARAMETERS nvarchar(max) = '@EXCEPTIONCODE tinyint';
set @SQL =
'update dbo.[' + @IMPORTTABLENAME + '] set ' +
' [EXCEPTIONCODE] = @EXCEPTIONCODE ' +
'where [EXCEPTIONCODE] = 0 ';
if @ALTERNATELOOKUPIDTYPECODEID is not null begin
set @SQL = @SQL +
'and cast([' + @IDFIELDNAME + '] as ' + @IDFIELDDATATYPE + ') not in ' +
'(select [ALTERNATELOOKUPID] from dbo.[ALTERNATELOOKUPID] where [ALTERNATELOOKUPIDTYPECODEID] = @ALTERNATELOOKUPIDTYPECODEID)';
set @PARAMETERS = @PARAMETERS + ', @ALTERNATELOOKUPIDTYPECODEID uniqueidentifier';
exec sp_executesql @SQL, @PARAMETERS, @EXCEPTIONCODE = @EXCEPTIONCODE, @ALTERNATELOOKUPIDTYPECODEID = @ALTERNATELOOKUPIDTYPECODEID;
end else begin
set @SQL = @SQL +
'and cast([' + @IDFIELDNAME + '] as ' + @IDFIELDDATATYPE + ') not in (select [' + @BASETABLEIDFIELDNAME + '] from dbo.[' + @BASETABLENAME + '])';
exec sp_executesql @SQL, @PARAMETERS, @EXCEPTIONCODE = @EXCEPTIONCODE;
end
return 0;
end