USP_SPONSORSHIPOPPORTUNITY_RESERVE
Reserves a child based on a user selection.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@OPPORTUNITYID | uniqueidentifier | IN | |
@KEYID | uniqueidentifier | IN | |
@SUCCESSCOUNT | int | INOUT | |
@EXCEPTIONCOUNT | int | INOUT | |
@SUCCESSTABLE | nvarchar(128) | IN | |
@EXCEPTIONTABLE | nvarchar(128) | IN | |
@PENDING | int | IN | |
@INELIGIBLE | int | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_SPONSORSHIPOPPORTUNITY_RESERVE
(
@OPPORTUNITYID uniqueidentifier,
@KEYID uniqueidentifier,
@SUCCESSCOUNT int = 0 output,
@EXCEPTIONCOUNT int = 0 output,
@SUCCESSTABLE nvarchar(128),
@EXCEPTIONTABLE nvarchar(128),
@PENDING int = 1,
@INELIGIBLE int = 1,
@CHANGEAGENTID uniqueidentifier = null
)
as
begin
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @LOGSUCCESSSQL nvarchar(200)
declare @LOGSUCCESSPARAMS nvarchar(75)
declare @LOGEXCEPTIONSQL nvarchar(200)
declare @LOGEXCEPTIONPARAMS nvarchar(75)
set @LOGSUCCESSSQL = N'insert into dbo.' + @SUCCESSTABLE + N' (SPOPPORTUNITYID) ' +
N'values (@SPOPPORTUNITYID)'
set @LOGSUCCESSPARAMS = N'@SPOPPORTUNITYID uniqueidentifier'
set @LOGEXCEPTIONSQL = N'insert into dbo.' + @EXCEPTIONTABLE + N' (SPOPPORTUNITYID, ERRORMESSAGE) ' +
N'values (@SPOPPORTUNITYID,@ERRORMESSAGE)'
set @LOGEXCEPTIONPARAMS = N'@SPOPPORTUNITYID uniqueidentifier,' +
N'@ERRORMESSAGE nvarchar(255)'
set @SUCCESSCOUNT = 0
set @EXCEPTIONCOUNT = 0
begin try
save transaction RESERVE
-- change the key status
update dbo.SPONSORSHIPOPPORTUNITYRESERVATIONSTATUS
set STATUSCODE = 1, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
where OPPORTUNITYRESERVATIONKEYID = @KEYID and STATUSCODE <> 1
-- update the opportunity
update SO
set RESERVATIONKEYID = @KEYID, AVAILABILITYCODE = 1, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
from dbo.SPONSORSHIPOPPORTUNITY SO
inner join dbo.SPONSORSHIPOPPORTUNITYLOCK SOL on SOL.ID = SO.ID
where SO.ID = @OPPORTUNITYID
and SO.AVAILABILITYCODE = 0
and SO.ELIGIBILITYCODE in (1,@PENDING,@INELIGIBLE)
and SOL.LOCKED = 0;
if @@ROWCOUNT = 0
raiserror('BBERR_OPPORTUNITYNOTAVAILABLE',13,1)
-- log the successful transfer
exec sp_executesql @LOGSUCCESSSQL,
@LOGSUCCESSPARAMS,
@OPPORTUNITYID
set @SUCCESSCOUNT = @SUCCESSCOUNT + 1
end try
begin catch
rollback transaction RESERVE
declare @MSG nvarchar(255)
set @MSG = ERROR_MESSAGE()
exec sp_executesql @LOGEXCEPTIONSQL,
@LOGEXCEPTIONPARAMS,
@OPPORTUNITYID,
@MSG
set @EXCEPTIONCOUNT = @EXCEPTIONCOUNT + 1
end catch
return 0
end