USP_FILEVIEWDATA_ADDFILEVIEW
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@FILEVIEWXMLDATA | xml | IN | |
@MAXRECORDS | int | IN |
Definition
Copy
create procedure dbo.USP_FILEVIEWDATA_ADDFILEVIEW
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@FILEVIEWXMLDATA xml = '',
@MAXRECORDS int = 0
)
as
set nocount on;
if @ID is null
set @ID = newid()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
declare @IsUserGuid bit
set @IsUserGuid = (select 1 from dbo.ClientUsers CU where CU.[GUID] = @ID)
declare @XMLDATA xml
if @IsUserGuid = 1
begin
set @XMLDATA = (select [XMLDATA] from [dbo].[FILEVIEWDATA] where [ID] = @ID)
end
else
begin
declare @TEMP table (BinaryData image, TextData ntext)
insert into @TEMP
exec [dbo].[spTempDataFetch] @ID
set @XMLDATA = (select top 1 TEXTDATA from @TEMP)
declare @TEXTDATA nvarchar(max)
declare @EXPIRATION datetime
set @EXPIRATION = DATEADD(d,30, GetUTCDate())
end
if @XMLDATA is null
begin
set @XMLDATA = '<FileViews />'
if @IsUserGuid = 1
begin
insert into [dbo].[FILEVIEWDATA]
(ID, XMLData, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@ID, @XMLDATA, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
end
else
begin
set @TEXTDATA = CAST(@XMLDATA as nvarchar(max))
exec [dbo].[spTempDataAdd] @ID, null, @TEXTDATA, @EXPIRATION
end
end
declare @HASTIME bit
set @HASTIME = (select 1 from @FILEVIEWXMLDATA.nodes('Fl[1]/@T') FL(T))
if @HASTIME is null
begin
--Set the date/time of the file view
declare @T datetime
set @T = GETUTCDATE()
set @FILEVIEWXMLDATA.modify('insert attribute T {sql:variable("@T")} into (/Fl)[1]')
end
set @XMLDATA.modify('insert sql:variable("@FILEVIEWXMLDATA") as first into (/FileViews)[1]')
if @MAXRECORDS > 0
set @XMLDATA.modify('delete /FileViews/Fl[position()>sql:variable("@MAXRECORDS")]')
if @IsUserGuid = 1
begin
update [dbo].[FILEVIEWDATA] with (rowlock)
set [XMLDATA] = @XMLDATA
where [ID] = @ID
end
else
begin
set @TEXTDATA = CAST(@XMLDATA as nvarchar(max))
exec [dbo].[spTempDataAdd] @ID, null, @TEXTDATA, @EXPIRATION
end
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0