USP_AUDIT_GETDETAIL_HEADER
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@AUDITTABLE | nvarchar(128) | IN | |
@AUDITRECORDID | uniqueidentifier | IN | |
@AUDITKEY | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_AUDIT_GETDETAIL_HEADER
@AUDITTABLE nvarchar(128),
@AUDITRECORDID uniqueidentifier,
@AUDITKEY uniqueidentifier
with execute as owner
as
--Used by audit trail detail report.
set nocount on;
if @AUDITTABLE like '%;%' or @AUDITTABLE like '%--%' or @AUDITTABLE like '%*%'
begin
raiserror('Invalid @AUDITTABLE passed to dbo.USP_AUDIT_GETDETAIL_HEADER',16,10)
return -12
end
declare @t table (AUDITDATE datetime,USERNAME nvarchar(128), APPLICATIONNAME nvarchar(255),AUDITTYPECODE tinyint)
declare @sql nvarchar(2000)
set @sql='select top 1 a.AUDITDATE,ca.USERNAME,ca.APPLICATIONNAME, a.AUDITTYPECODE from dbo.'
+ @AUDITTABLE +
' as a inner join dbo.CHANGEAGENT as ca on a.AUDITCHANGEAGENTID=ca.id
where a.AUDITRECORDID=''' + cast(@AUDITRECORDID as nvarchar(36)) + '''
and a.AUDITKEY=''' + cast(@AUDITKEY as nvarchar(36)) + ''' and a.AUDITTYPECODE in (0,2)'
begin try
declare @transField nvarchar(128);
declare @baseTable nvarchar(128);
declare @transValue nvarchar(1024);
set @transvalue=cast(@AUDITRECORDID as nvarchar(36));
set @baseTable= left(@AUDITTABLE, len(@AUDITTABLE) - 5);
select @transField=dbo.UFN_SCHEMA_TABLE_GETTABLETRANSLATIONFIELD(@baseTable);
if len(coalesce(@transField,''))> 0
begin
declare @transSQL nvarchar(1024);
declare @parmdef nvarchar(500);
set @parmdef= N'@id uniqueidentifier, @val nvarchar(1024) output';
set @transsql='select @val = [' + @transfield + '] from ' + @baseTable + ' where ID = @ID'
exec sp_executesql @transsql,@parmdef,@ID=@AUDITRECORDID,@val=@transValue output;
end
insert into @t (AUDITDATE,USERNAME,APPLICATIONNAME,AUDITTYPECODE)
exec(@sql)
select AUDITDATE,USERNAME,APPLICATIONNAME,
case AUDITTYPECODE when 0 then 'Update' when 2 then 'Delete' else '?' end as CHANGE_TYPE,
@transvalue as [IDTRANSLATION]
from @t;
return 0;
end try
begin catch
declare @M nvarchar(2000)
set @M='Invalid audit table name or other error: ' + ERROR_MESSAGE();
raiserror(@M,16,10)
return -44
end catch