USP_REPORTCATALOG_CREATEORUPDATE

Used by the platform SQLCLR to register a report in the catalog

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@NAME nvarchar(100) IN
@DESCRIPTION nvarchar(max) IN
@REPORTSPECXML xml IN
@CHANGEAGENTID uniqueidentifier IN
@SPECUINAME nvarchar(100) IN

Definition

Copy


CREATE procedure dbo.USP_REPORTCATALOG_CREATEORUPDATE
    @ID uniqueidentifier = null output
    @NAME nvarchar(100),
    @DESCRIPTION nvarchar(max) = '',
    @REPORTSPECXML xml, 
    @CHANGEAGENTID uniqueidentifier = null,
    @SPECUINAME nvarchar(100) = N''

as

set nocount on;

declare @ExistingID uniqueidentifier;

if @SPECUINAME is null
    set @SPECUINAME = N'';

if @ID is null
    begin
      select @ExistingID = ID from dbo.REPORTCATALOG where NAME = @NAME;
      set @ID = @ExistingID;
    end
else
    select @ExistingID = ID from dbo.REPORTCATALOG where ID = @ID;

if @ChangeAgentID is null 
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @ChangeAgentID output;

declare @date datetime;
set @date = getDate();

if @ExistingID is null 

    begin    
        if @ID is null set @ID = NewID();

        insert into dbo.REPORTCATALOG
        (ID, [NAME], DESCRIPTION, REPORTSPECXML, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, SPECUINAME)
        values 
        (@ID, @NAME, @DESCRIPTION, @REPORTSPECXML, @ChangeAgentID, @ChangeAgentID, @date, @date, @SPECUINAME);
    end

else
    update dbo.REPORTCATALOG
        set [NAME]=@NAME,
            DESCRIPTION=@DESCRIPTION,
            REPORTSPECXML = @REPORTSPECXML,
            CHANGEDBYID=@ChangeAgentID,
            DATECHANGED=@date,
            SPECUINAME=@SPECUINAME
        where ID = @ID;

if @@rowcount=0 return 1;

return 0;