USP_DATAFORMTEMPLATE_CREATEORUPDATE_SP
Adds or updates a row in the DATAFORMTEMPLATECATALOG table for SP-based data forms.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@TEMPLATENAME | nvarchar(60) | IN | |
@DESCRIPTION | nvarchar(1000) | IN | |
@RECORDTYPE | nvarchar(50) | IN | |
@MODE | smallint | IN | |
@LOADPROC | nvarchar(128) | IN | |
@SAVEPROC | nvarchar(128) | IN | |
@FORMDEFXML | xml | IN | |
@EXCEPTIONSXML | xml | IN | |
@SPEC | xml | IN | |
@CONTEXTPARAMETERNAME | nvarchar(128) | IN | |
@CONTEXTRECORDTYPE | nvarchar(50) | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@SPECUINAME | nvarchar(60) | IN | |
@MARTKEY | nvarchar(255) | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_CREATEORUPDATE_SP
(
@ID uniqueidentifier output,
@TEMPLATENAME nvarchar(60),
@DESCRIPTION nvarchar(1000) = '',
@RECORDTYPE nvarchar(50) = '',
@MODE smallint,
@LOADPROC nvarchar(128) = '',
@SAVEPROC nvarchar(128) = '',
@FORMDEFXML xml,
@EXCEPTIONSXML xml = '',
@SPEC xml,
@CONTEXTPARAMETERNAME nvarchar(128) = '',
@CONTEXTRECORDTYPE nvarchar(50) = '',
@CHANGEAGENTID uniqueidentifier = null,
@SPECUINAME nvarchar(60) = N'',
@MARTKEY nvarchar(255) = null
)
as
set nocount on
declare @RecTypeID uniqueidentifier
declare @OBJID int
declare @ExistingID uniqueidentifier
if @MARTKEY = ''
set @MARTKEY = null;
if @ID is null
begin
select @ExistingID = [ID] from dbo.[DATAFORMTEMPLATECATALOG] where [TEMPLATENAME] = @TEMPLATENAME
set @ID = @ExistingID
end
else
select @ExistingID = [ID] from dbo.[DATAFORMTEMPLATECATALOG] where [ID] = @ID
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
if @SPECUINAME is null
set @SPECUINAME = N'';
-- view mode
if @MODE = 0
begin
set @SAVEPROC = ''
set @EXCEPTIONSXML = ''
end
if @MARTKEY is null
begin
if len(@LOADPROC) = 0
begin
if @MODE <> 2
begin
raiserror ('You must specify a valid load procedure name.', 16, 1)
return 1;
end
end
else
begin
select @OBJID = id from dbo.sysobjects where name = @LOADPROC and type in ('P', 'PC')
if @OBJID is null
begin
raiserror ('Procedure ''%s'' does not exist or you do not have security access.', 16, 1, @LOADPROC)
return 1;
end
end
if len(@SAVEPROC) = 0
begin
if @MODE <> 0
begin
raiserror ('You must specify a valid save procedure name.', 16, 1)
return 2;
end
end
else
begin
select @OBJID = id from dbo.sysobjects where type in ('P', 'PC') and name = @SAVEPROC
if @OBJID is null
begin
raiserror ('Procedure ''%s'' does not exist or you do not have security access.', 16, 1, @SAVEPROC)
return 2;
end
end
end
declare @CONTEXTRECORDTYPEID uniqueidentifier;
if coalesce(@CONTEXTRECORDTYPE,'') <> ''
begin
exec dbo.USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME
@NAME=@CONTEXTRECORDTYPE,
@CHANGEAGENTID=@CHANGEAGENTID,
@RECORDTYPEID=@CONTEXTRECORDTYPEID output;
end
declare @SECURITYUIFOLDER nvarchar(255);
declare @SECURITYUIDISPLAYFEATURE bit;
if @MODE = 0
begin
--view
set @SECURITYUIFOLDER =
coalesce(@SPEC.value(
'
declare namespace bbafx="bb_appfx_viewdataformtemplate";
declare namespace c="bb_appfx_commontypes";
/bbafx:ViewDataFormTemplateSpec[1]/@c:SecurityUIFolder
'
,'nvarchar(255)')
,'');
set @SECURITYUIDISPLAYFEATURE = cast(
coalesce(@SPEC.value(
'
declare namespace bbfa="bb_appfx_viewdataformtemplate";
/bbfa:ViewDataFormTemplateSpec[1]/@SecurityUIDisplayFeature
','bit')
,
1
) as bit);
end
else if @MODE = 1
begin
--edit
set @SECURITYUIFOLDER=
coalesce(@SPEC.value(
'
declare namespace bbafx="bb_appfx_editdataformtemplate";
declare namespace c="bb_appfx_commontypes";
/bbafx:EditDataFormTemplateSpec[1]/@c:SecurityUIFolder
'
,'nvarchar(255)')
,'');
set @SECURITYUIDISPLAYFEATURE = cast(
coalesce(@SPEC.value(
'
declare namespace bbfa="bb_appfx_editdataformtemplate";
/bbfa:EditDataFormTemplateSpec[1]/@SecurityUIDisplayFeature
','bit')
,
1
) as bit);
end
else if @MODE=2
begin
--add
set @SECURITYUIFOLDER=
coalesce(@SPEC.value(
'
declare namespace bbafx="bb_appfx_adddataformtemplate";
declare namespace c="bb_appfx_commontypes";
/bbafx:AddDataFormTemplateSpec[1]/@c:SecurityUIFolder
'
,'nvarchar(255)')
,'');
set @SECURITYUIDISPLAYFEATURE = cast(
coalesce(@SPEC.value(
'
declare namespace bbfa="bb_appfx_adddataformtemplate";
/bbfa:AddDataFormTemplateSpec[1]/@SecurityUIDisplayFeature
','bit')
,
1
) as bit);
end
--Add record type if it does not exist.
set @RecTypeID = null
if coalesce(@RECORDTYPE,'') <> ''
exec dbo.USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME @NAME=@RECORDTYPE,@CHANGEAGENTID=@CHANGEAGENTID,@RECORDTYPEID=@RecTypeID output;
--------------------------------------------------------------------------------------------------------------------
/*
pdg 10.6.2010 move the determination of this metadata to loadspec time instead of at runtime
*/
--------------------------------------------------------------------------------------------------------------------
declare @HasChangeAgent bit = 0;
declare @HasTSLong bit = 0;
declare @HasAppUserForLoad bit = 0;
declare @HasAppUserForSave bit = 0;
declare @HasIDForLoad bit = 0;
if len(@LOADPROC) > 0 and @MARTKEY is null
begin
select @HasTSLong = 1 from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_SCHEMA='dbo' and SPECIFIC_NAME = @LOADPROC and PARAMETER_NAME = '@TSLONG';
select @HasAppUserForLoad = 1 from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_SCHEMA='dbo' and SPECIFIC_NAME = @LOADPROC and PARAMETER_NAME = '@CURRENTAPPUSERID';
select @HasIDForLoad = 1 from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_SCHEMA='dbo' and SPECIFIC_NAME = @LOADPROC and PARAMETER_NAME = '@ID';
end
if len(@SAVEPROC) > 0 and @MARTKEY is null
begin
select @HasChangeAgent = 1 from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_SCHEMA='dbo' and SPECIFIC_NAME = @SAVEPROC and PARAMETER_NAME = '@CHANGEAGENTID';
select @HasAppUserForSave = 1 from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_SCHEMA='dbo' and SPECIFIC_NAME = @SAVEPROC and PARAMETER_NAME = '@CURRENTAPPUSERID';
end
--------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------
declare @NOSECURITYREQUIRED bit=0;
if @MODE = 0
set @NOSECURITYREQUIRED =
coalesce(@SPEC.value(
'declare namespace bbspec="bb_appfx_viewdataformtemplate";
declare namespace c="bb_appfx_commontypes";
/bbspec:ViewDataFormTemplateSpec[1]/@NoSecurityRequired'
, 'bit')
, 0);
if @MODE = 1
set @NOSECURITYREQUIRED =
coalesce(@SPEC.value(
'declare namespace bbspec="bb_appfx_editdataformtemplate";
declare namespace c="bb_appfx_commontypes";
/bbspec:EditDataFormTemplateSpec[1]/@NoSecurityRequired'
, 'bit')
, 0);
if @MODE = 2
set @NOSECURITYREQUIRED=
coalesce(@SPEC.value(
'declare namespace bbspec="bb_appfx_adddataformtemplate";
declare namespace c="bb_appfx_commontypes";
/bbspec:AddDataFormTemplateSpec[1]/@NoSecurityRequired'
, 'bit')
, 0);
----------------------------------------------------------------------------------------------------------------------------------------------
if @ExistingID is null
begin
if @ID is null set @ID = NewID()
insert into dbo.[DATAFORMTEMPLATECATALOG] (
[ID], [TEMPLATENAME], [DESCRIPTION], [LOADPROCEDURE], [SAVEPROCEDURE], [RECORDTYPEID], [MODE], [FORMDEFINITIONXML], [EXCEPTIONSXML], [TEMPLATESPECXML],
[CONTEXTPARAMETERNAME], [CONTEXTRECORDTYPEID], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED], [SECURITYUIFOLDER], [HASAPPUSERFORLOAD],
[HASAPPUSERFORSAVE], [HASCHANGEAGENT], [HASIDFORLOAD], [HASTSLONG], [NOSECURITYREQUIRED], [SPECUINAME], [MARTKEY], [SECURITYUIDISPLAYFEATURE]
)
values (
@ID, @TEMPLATENAME, @DESCRIPTION, @LOADPROC, @SAVEPROC, @RecTypeID, @MODE, @FORMDEFXML, @EXCEPTIONSXML, @SPEC,
@CONTEXTPARAMETERNAME, @CONTEXTRECORDTYPEID, @CHANGEAGENTID, @CHANGEAGENTID, GETDATE(), GETDATE(), @SECURITYUIFOLDER, @HasAppUserForLoad,
@HasAppUserForSave, @HasChangeAgent, @HasIDForLoad, @HasTSLong, @NOSECURITYREQUIRED, @SPECUINAME, @MARTKEY, @SECURITYUIDISPLAYFEATURE
)
end
else
update dbo.[DATAFORMTEMPLATECATALOG]
set [TEMPLATENAME] = @TEMPLATENAME,
[DESCRIPTION] = @DESCRIPTION,
[FORMDEFINITIONXML] = @FORMDEFXML,
[RECORDTYPEID] = @RecTypeID,
[MODE] = @MODE,
[IMPLEMENTATIONTYPE] = 0,
[LOADPROCEDURE] = @LOADPROC,
[SAVEPROCEDURE] = @SAVEPROC,
[EXCEPTIONSXML] = @EXCEPTIONSXML,
[STATICPARAMETERDEFINITION] = null,
[TEMPLATESPECXML] = @SPEC,
[CONTEXTPARAMETERNAME] = @CONTEXTPARAMETERNAME,
[CONTEXTRECORDTYPEID] = @CONTEXTRECORDTYPEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[SECURITYUIFOLDER] = @SECURITYUIFOLDER,
[DATECHANGED] = getdate(),
[HASAPPUSERFORLOAD] = @HasAppUserForLoad,
[HASAPPUSERFORSAVE] = @HasAppUserForSave,
[HASCHANGEAGENT] = @HasChangeAgent,
[HASIDFORLOAD] = @HasIDForLoad,
[HASTSLONG] = @HasTSLong,
[NOSECURITYREQUIRED] = @NOSECURITYREQUIRED,
[ASSEMBLYNAME] = '',
[CLASSNAME] = '',
[SPECUINAME] = @SPECUINAME,
[MARTKEY] = @MARTKEY,
[SECURITYUIDISPLAYFEATURE] = @SECURITYUIDISPLAYFEATURE
where [ID] = @ID;
return 0;