USP_PAGEVIEWDATA_ADDPAGEVIEW
The save procedure used by the add dataform template "PageViewData Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@PAGEVIEWXMLDATA | xml | IN | Page View XML Data |
@MAXRECORDS | int | IN | Maximum number of page views to track. User 0 for no limit. |
Definition
Copy
CREATE procedure dbo.USP_PAGEVIEWDATA_ADDPAGEVIEW
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@PAGEVIEWXMLDATA 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].[PAGEVIEWDATA] 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 = '<PageViews />'
if @IsUserGuid = 1
begin
insert into [dbo].[PAGEVIEWDATA]
(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 @PAGEVIEWXMLDATA.nodes('Pg[1]/@T') PG(T))
if @HASTIME is null
begin
--Set the date/time of the page view
declare @T datetime
set @T = GETUTCDATE()
set @PAGEVIEWXMLDATA.modify('insert attribute T {sql:variable("@T")} into (/Pg)[1]')
end
set @XMLDATA.modify('insert sql:variable("@PAGEVIEWXMLDATA") as first into (/PageViews)[1]')
if @MAXRECORDS > 0
set @XMLDATA.modify('delete /PageViews/Pg[position()>sql:variable("@MAXRECORDS")]')
if @IsUserGuid = 1
begin
update [dbo].[PAGEVIEWDATA] 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