USP_SQLPROCEDURECATALOG_CREATEORUPDATE

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@PROCEDURENAME nvarchar(100) IN
@DESCRIPTION nvarchar(max) IN
@SQLPROCEDURESPECXML xml IN
@CHANGEAGENTID uniqueidentifier IN
@MARTKEY nvarchar(255) IN

Definition

Copy


CREATE procedure dbo.[USP_SQLPROCEDURECATALOG_CREATEORUPDATE]
    @ID uniqueidentifier = null output
    @PROCEDURENAME nvarchar(100),
    @DESCRIPTION nvarchar(max) = '',
    @SQLPROCEDURESPECXML xml, 
    @CHANGEAGENTID uniqueidentifier = null,
  @MARTKEY nvarchar(255) = null
as

set nocount on

declare @ExistingID uniqueidentifier

if @ID is null
    begin
      select @ExistingID = [ID] from dbo.[SQLPROCEDURECATALOG] where [PROCEDURENAME] = @PROCEDURENAME
      set @ID = @ExistingID
    end
else
    select @ExistingID = [ID] from dbo.[SQLPROCEDURECATALOG] 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.[SQLPROCEDURECATALOG]
        ([ID], [PROCEDURENAME], [DESCRIPTION], [SQLPROCEDURESPECXML], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED], [MARTKEY])
        values 
        (@ID, @PROCEDURENAME, @DESCRIPTION, @SQLPROCEDURESPECXML, @ChangeAgentID, @ChangeAgentID, @date, @date, @MARTKEY)        
    end

else
    update dbo.[SQLPROCEDURECATALOG]
        set [PROCEDURENAME] = @PROCEDURENAME,
            [DESCRIPTION] = @DESCRIPTION,
            [SQLPROCEDURESPECXML] = @SQLPROCEDURESPECXML,
            [CHANGEDBYID] = @ChangeAgentID,
            [DATECHANGED] = @date,
        [MARTKEY] = @MARTKEY
        where [ID] = @ID;

if @@rowcount=0 return 1;

return 0;