|
|
-- Script: uddi.v2.repl.sql
-- Author: [email protected]
-- Description: Creates replication stored procedures.
-- Note: This file is best viewed and edited with a tab width of 2.
-- =============================================
-- Section: Update routines
-- =============================================
-- =============================================
-- Name: net_changeRecord_save
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_changeRecord_save' AND type = 'P') DROP PROCEDURE net_changeRecord_save GO
CREATE PROCEDURE net_changeRecord_save @USN bigint = NULL, -- NULL for local changeRecords
@PUID nvarchar(450) = NULL, -- NULL for remote changeRecords
@delegatePUID nvarchar(450) = NULL, -- NULL for remote changeRecords or local changeRecords with no delegate
@operatorKey uniqueidentifier = NULL, -- NULL for local changeRecords
@entityKey uniqueidentifier = NULL, -- entityKey for top-level entity in changeRecord
@entityTypeID tinyint = NULL, -- entityType for top-level entity in changeRecord
@changeTypeID tinyint, -- changeType for current save operation
@contextID uniqueidentifier, -- contextID for current save operation
@contextTypeID tinyint, -- contextType for current save operation
@lastChange bigint, -- timestamp for changeRecord
@changeData ntext, -- payload for current save operation
@flag int = 0, -- for future use
@seqNo bigint OUTPUT -- seqNo of newly created changeRecord
WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @publisherID bigint, @delegatePublisherID bigint, @operatorID bigint, @RC int
-- Validate parameters
IF (@PUID IS NOT NULL) AND (@operatorKey IS NOT NULL) BEGIN SET @error = 50009 -- E_parmError
SET @context = 'Must pass either @PUID (local) or @operatorKey (remote).' GOTO errorLabel END
IF (@operatorKey IS NOT NULL) BEGIN SET @operatorID = dbo.operatorID(@operatorKey) IF @operatorID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = '@operatorKey = ' + dbo.UUIDSTR(@operatorKey) GOTO errorLabel END
SELECT @PUID = PU.[PUID] FROM [UDO_publishers] PU JOIN [UDO_operators] OP ON PU.[publisherID] = OP.[publisherID] WHERE (OP.[operatorID] = @operatorID)
IF @delegatePUID IS NOT NULL BEGIN SET @error = 50009 -- E_parmError
SET @context = '@delegatePUID not valid for remote changeRecords.' GOTO errorLabel END
SET @publisherID = dbo.publisherID(@PUID) END -- @operatorKey
ELSE BEGIN -- Local change records
IF @delegatePUID IS NOT NULL BEGIN SET @delegatePublisherID = dbo.publisherID(@delegatePUID) IF @delegatePublisherID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'Invalid delegate PUID. Delegates must be registered as publishers prior to impersonating other users.' GOTO errorLabel END END
IF @PUID IS NULL SET @publisherID = dbo.currentOperatorID() ELSE SET @publisherID = dbo.publisherID(@PUID) END
IF @publisherID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'Invalid PUID.' GOTO errorLabel END ELSE
-- Insert changeRecord
INSERT [UDO_changeLog] ( [USN], [newSeqNo], [publisherID], [delegatePublisherID], [entityKey], [entityTypeID], [changeTypeID], [contextID], [contextTypeID], [lastChange], [changeData], [flag]) VALUES ( @USN, NULL, @publisherID, @delegatePublisherID, @entityKey, @entityTypeID, @changeTypeID, @contextID, @contextTypeID, @lastChange, @changeData, @flag)
SET @seqNo = @@IDENTITY
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_changeRecord_save
GO
-- =============================================
-- Name: net_changeRecord_update
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_changeRecord_update' AND type = 'P') DROP PROCEDURE net_changeRecord_update GO
CREATE PROCEDURE net_changeRecord_update @seqNo bigint = NULL, -- NULL for remote changeRecords
@USN bigint = NULL, -- NULL for local changeRecords
@operatorKey uniqueidentifier = NULL, -- NULL for local changeRecords
@newSeqNo bigint = NULL, -- seqNo of corrected changeRecord
@flag int = NULL -- updated flag value
WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @operatorID bigint, @publisherID bigint
-- Check parameters
IF @seqNo IS NOT NULL AND @USN IS NOT NULL BEGIN SET @error = 50009 -- E_parmError
SET @context = 'Procedure accepts either @seqNo or @USN parameters, not both.' GOTO errorLabel END
IF @newSeqNo IS NOT NULL BEGIN IF NOT EXISTS(SELECT [seqNo] FROM [UDO_changeLog] WHERE (([seqNo] = @newSeqNo) AND ([changeTypeID] = dbo.changeTypeID('changeRecordCorrection')))) BEGIN SET @error = 50015 -- E_invalidSeqNo
SET @context = '@newSeqNo = ' + CAST(@newSeqNo AS varchar(256)) GOTO errorLabel END END
IF @seqNo IS NOT NULL BEGIN UPDATE [UDO_changeLog] SET
[newSeqNo] = ISNULL(@newSeqNo, [newSeqNo]), [flag] = ISNULL(@flag, [flag]) WHERE ([seqNo] = @seqNo) AND ([changeTypeID] <> dbo.changeTypeID('changeRecordCorrection'))
IF @@ROWCOUNT = 0 BEGIN SET @error = 50015 -- E_invalidSeqNo
SET @context = 'changeRecord for seqNo = ' + CAST(@seqNo AS varchar(256)) + ' is invalid.' GOTO errorLabel END END
IF @USN IS NOT NULL BEGIN IF @operatorKey IS NULL BEGIN SET @error = 50009 -- E_parmError
SET @context = '@operatorKey required when annotating a USN.' END
SET @operatorID = dbo.operatorID(@operatorKey)
IF @operatorID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'Unknown operatorKey: ' + dbo.UUIDSTR(@operatorKey) GOTO errorLabel END
SET @publisherID = dbo.getOperatorPublisherID(@operatorID)
UPDATE [UDO_changeLog] SET
[newSeqNo] = ISNULL(@newSeqNo, [newSeqNo]), [flag] = ISNULL(@flag, [flag]) WHERE ([USN] = @USN) AND ([publisherID] = @publisherID) AND ([changeTypeID] <> dbo.changeTypeID('changeRecordCorrection'))
IF @@ROWCOUNT = 0 BEGIN SET @error = 50015 -- E_invalidSeqNo
SET @context = 'changeRecord for USN = ' + CAST(@USN AS varchar(256)) + ' is invalid.' GOTO errorLabel END END
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_changeRecord_update
GO
-- =============================================
-- Section: Find and get routines
-- =============================================
-- =============================================
-- Name: net_find_changeRecords
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_find_changeRecords' AND type = 'P') DROP PROCEDURE net_find_changeRecords GO
CREATE PROCEDURE net_find_changeRecords @contextID uniqueidentifier, -- contextID of current find operation
@operatorKey uniqueidentifier, -- operatorKey for source operator node
@startUSN bigint, -- low end of USN range, NULL for 0
@stopUSN bigint, -- high end of USN range, NULL for max
@rows bigint OUTPUT -- rows added to UDS_findResults
WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @operatorID bigint, @publisherID bigint, @i int
SET @rows = 0
IF @startUSN > @stopUSN BEGIN SET @error = 50009 -- E_parmError
SET @context = '@startUSN must be less than or equal to @stopUSN.' GOTO errorLabel END
SET @operatorID = dbo.operatorID(@operatorKey)
IF @operatorID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'operatorKey = ' + dbo.UUIDSTR(@operatorKey) GOTO errorLabel END
SET @publisherID = dbo.getOperatorPublisherID(@operatorID)
IF (@operatorID = dbo.currentOperatorID()) BEGIN -- Find changeRecords for the local operator
INSERT [UDS_replResults] ( [contextID], [seqNo]) SELECT @contextID, [seqNo] FROM [UDO_changeLog] WHERE ([seqNo] BETWEEN @startUSN and @stopUSN) AND ([USN] IS NULL) ORDER BY [seqNo] ASC END ELSE BEGIN INSERT [UDS_replResults] ( [contextID], [seqNo]) SELECT @contextID, [seqNo] FROM [UDO_changeLog] WHERE ([USN] BETWEEN @startUSN and @stopUSN) AND ([publisherID] = @publisherID) ORDER BY [seqNo] ASC END
SET @rows = @@ROWCOUNT
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_find_changeRecords
GO
-- =============================================
-- Name: net_find_changeRecords_cleanup
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_find_changeRecords_cleanup' AND type = 'P') DROP PROCEDURE net_find_changeRecords_cleanup GO
CREATE PROCEDURE net_find_changeRecords_cleanup @contextID uniqueidentifier -- contextID of current find operation
WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000)
DELETE [UDS_replResults] WHERE ([contextID] = @contextID)
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_find_changeRecords_cleanup
GO
-- =============================================
-- Name: net_find_changeRecords_commit
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_find_changeRecords_commit' AND type = 'P') DROP PROCEDURE net_find_changeRecords_commit GO
CREATE PROCEDURE net_find_changeRecords_commit @contextID uniqueidentifier, -- contextID of current find operation
@responseLimitCount bigint -- limits number of rows returned, 0 for all
WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @RC int, @changeRecord cursor, @seqNo bigint, @USN bigint, @newSeqNo bigint, @publisherID bigint, @changeDataSeqNo bigint, @flag int, @rowNum bigint
CREATE TABLE #tempResults (
[seqNo] bigint, [USN] bigint, [newSeqNo] bigint, [publisherID] bigint, [changeDataSeqNo] bigint, [flag] int) -- Set responseLimitCount
IF ISNULL(@responseLimitCount,0) = 0 SET @responseLimitCount = ISNULL(dbo.configValue('Replication.ResponseLimitCountDefault'),1000)
SET @changeRecord = CURSOR LOCAL FORWARD_ONLY READ_ONLY FOR SELECT DISTINCT CL.[seqNo], CL.[USN], CL.[newSeqNo], CL.[publisherID], CL.[flag] FROM [UDO_changeLog] CL JOIN [UDS_replResults] RR ON CL.[seqNo] = RR.[seqNo] WHERE (RR.[contextID] = @contextID) ORDER BY 1 ASC
OPEN @changeRecord FETCH NEXT FROM @changeRecord INTO @seqNo, @USN, @newSeqNo, @publisherID, @flag SET @rowNum = 0
WHILE @@FETCH_STATUS = 0 BEGIN SET @rowNum = @rowNum + 1
IF @rowNum > @responseLimitCount BREAK
IF @newSeqNo IS NULL SET @changeDataSeqNo = @seqNo ELSE SET @changeDataSeqNo = @newSeqNo INSERT #tempResults(
[seqNo], [USN], [newSeqNo], [publisherID], [changeDataSeqNo], [flag]) VALUES ( @seqNo, @USN, @newSeqNo, @publisherID, @changeDataSeqNo, @flag) FETCH NEXT FROM @changeRecord INTO @seqNo, @USN, @newSeqNo, @publisherID, @flag END
CLOSE @changeRecord
SELECT TR.[seqNo] AS [seqNo], ISNULL(TR.[USN], TR.[seqNo]) AS [USN], dbo.operatorKey(dbo.getPublisherOperatorID(TR.[publisherID])) AS [operatorKey], CL.[changeData] AS [changeData], CL.[changeTypeID] AS [changeTypeID], TR.[flag] AS [flag] FROM #tempResults TR
JOIN [UDO_changeLog] CL ON TR.[changeDataSeqNo] = CL.[seqNo] ORDER BY 1 ASC
EXEC @RC=net_find_changeRecords_cleanup @contextID
IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_find_changeRecords_commit
GO
-- =============================================
-- Section: Operator routines
-- =============================================
-- =============================================
-- Name: net_operator_save
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_operator_save' AND type = 'P') DROP PROCEDURE net_operator_save GO
CREATE PROCEDURE net_operator_save @operatorKey uniqueidentifier, -- insert only
@PUID nvarchar(450) = NULL, -- insert only
@operatorStatusID tinyint = NULL, -- insert / update (NULL for no change)
@name nvarchar(450) = NULL, -- insert / update (NULL for no change)
@soapReplicationURL nvarchar(4000) = NULL, -- insert / update (NULL for no change)
@businessKey uniqueidentifier = NULL, -- insert / update (NULL for no change)
@certSerialNo nvarchar(450) = NULL, -- insert / update (NULL for no change)
@certIssuer nvarchar(225) = NULL, -- insert / update (NULL for no change)
@certSubject nvarchar(225) = NULL, -- insert / update (NULL for no change)
@certificate image -- insert / update (always required)
WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @publisherID bigint, @oldOperatorStatusID tinyint, @oldName nvarchar(4000), @oldBusinessKey uniqueidentifier, @oldSoapReplicationURL nvarchar(4000), @oldCertSerialNo nvarchar(450), @oldCertIssuer nvarchar(225), @oldCertSubject nvarchar(225)
IF EXISTS(SELECT * FROM [UDO_operators] WHERE [operatorKey] = @operatorKey) BEGIN -- Update Logic
SELECT @oldOperatorStatusID = [operatorStatusID], @oldName = [name], @oldBusinessKey = [businessKey], @oldSoapReplicationURL = [soapReplicationURL], @oldCertSerialNo = [certSerialNo], @oldCertIssuer = [certIssuer], @oldCertSubject = [certSubject] FROM [UDO_operators] WHERE ([operatorKey] = @operatorKey)
UPDATE [UDO_operators] SET
[operatorStatusID] = ISNULL(@operatorStatusID, @oldOperatorStatusID), [name] = ISNULL(@name, @oldName), [businessKey] = ISNULL(@businessKey, @oldBusinessKey), [soapReplicationURL] = ISNULL(@soapReplicationURL, @oldSoapReplicationURL), [certSerialNo] = ISNULL(@certSerialNo, @oldCertSerialNo), [certIssuer] = ISNULL(@certIssuer, @oldCertIssuer), [certSubject] = ISNULL(@certSubject, @oldCertSubject), [certificate] = @certificate WHERE ([operatorKey] = @operatorKey) END ELSE BEGIN -- Insert Logic
-- Validate @publisherID
IF @PUID IS NOT NULL SET @publisherID = dbo.publisherID(@PUID)
IF @publisherID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = '' GOTO errorLabel END
IF EXISTS(SELECT * FROM [UDO_operators] WHERE [publisherID] = @publisherID) BEGIN SET @error = 60140 -- E_userMismatch
SET @context = 'Publisher is already being used by another operator.' GOTO errorLabel END
INSERT [UDO_operators]( [operatorKey], [publisherID], [operatorStatusID], [name], [businessKey], [soapReplicationURL], [certSerialNo], [certIssuer], [certSubject], [certificate], [flag]) VALUES( @operatorKey, @publisherID, ISNULL(@operatorStatusID,dbo.operatorStatusID('new')), @name, @businessKey, @soapReplicationURL, @certSerialNo, @certIssuer, @certSubject, @certificate, 0) END
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_operator_save
GO
-- =============================================
-- Name: net_operator_get
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_operator_get' AND type = 'P') DROP PROCEDURE net_operator_get GO
CREATE PROCEDURE net_operator_get @operatorKey uniqueidentifier WITH ENCRYPTION AS BEGIN -- Gets a single operator
DECLARE @error int, @context nvarchar(4000), @operatorID bigint
SET @operatorID = dbo.operatorID(@operatorKey)
IF @operatorID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'Invalid operatorKey: ' + dbo.UUIDSTR(@operatorKey) GOTO errorLabel END
SELECT [operatorStatusID], [name], [soapReplicationURL], [certSerialNo], [certIssuer], [certSubject], [certificate] FROM [UDO_operators] WHERE ([operatorID] = @operatorID) RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_operator_get
GO
-- =============================================
-- Name: net_operators_get
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_operators_get' AND type = 'P') DROP PROCEDURE net_operators_get GO
CREATE PROCEDURE net_operators_get WITH ENCRYPTION AS BEGIN -- Gets all operators
DECLARE @error int, @context nvarchar(4000)
SELECT [operatorKey], [operatorStatusID], [name], [soapReplicationURL] FROM [UDO_operators] RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_operators_get
GO
-- =============================================
-- Name: net_operator_delete
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_operator_delete' AND type = 'P') DROP PROCEDURE net_operator_delete GO
CREATE PROCEDURE net_operator_delete @operatorKey uniqueidentifier WITH ENCRYPTION AS BEGIN -- Gets a single operator
DECLARE @error int, @context nvarchar(4000), @operatorID bigint
SET @operatorID = dbo.operatorID(@operatorKey)
IF @operatorID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'Invalid operatorKey: ' + dbo.UUIDSTR(@operatorKey) GOTO errorLabel END
DELETE [UDO_operators] WHERE ([operatorID] = @operatorID)
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_operator_delete
GO
-- =============================================
-- Name: net_highWaterMarks_get
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_highWaterMarks_get' AND type = 'P') DROP PROCEDURE net_highWaterMarks_get GO
CREATE PROCEDURE net_highWaterMarks_get WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @currentOperatorID bigint, @operatorID bigint, @rows bigint, @operatorCursor cursor
DECLARE @results TABLE( [operatorKey] uniqueidentifier, [USN] bigint)
-- Calculate current highWaterMark for local operator
SET @currentOperatorID = dbo.currentOperatorID()
SELECT @rows = MAX([seqNo]) FROM [UDO_changeLog] WHERE ([publisherID] NOT IN (SELECT [publisherID] FROM [UDO_operators] WHERE [operatorID] <> @currentOperatorID))
INSERT @results VALUES( dbo.operatorKey(@currentOperatorID), ISNULL(@rows,0))
SET @operatorCursor = CURSOR LOCAL FORWARD_ONLY READ_ONLY FOR SELECT [operatorID] FROM [UDO_operators] WHERE [operatorID] <> @currentOperatorID
OPEN @operatorCursor
FETCH NEXT FROM @operatorCursor INTO @operatorID
WHILE @@FETCH_STATUS = 0 BEGIN SELECT @rows = MAX([USN]) FROM [UDO_changeLog] WHERE ([publisherID] = dbo.getOperatorPublisherID(@operatorID))
INSERT @results VALUES( dbo.operatorKey(@operatorID), ISNULL(@rows,0))
FETCH NEXT FROM @operatorCursor INTO @operatorID END
CLOSE @operatorCursor SELECT * FROM @results
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_highWaterMarks_get
GO
-- =============================================
-- Name: net_operatorLog_save
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_operatorLog_save' AND type = 'P') DROP PROCEDURE net_operatorLog_save GO
CREATE PROCEDURE net_operatorLog_save @operatorKey uniqueidentifier, @replStatusID tinyint, @description nvarchar(4000) = NULL, @lastOperatorKey uniqueidentifier = NULL, @lastUSN bigint = NULL, @lastChange bigint
WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @operatorID bigint
SET @operatorID = dbo.operatorID(@operatorKey)
IF @operatorID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'operatorKey = ' + dbo.UUIDSTR(@operatorKey) GOTO errorLabel END
INSERT [UDO_operatorLog] ( [operatorID], [replStatusID], [description], [lastOperatorKey], [lastUSN], [lastChange]) VALUES ( @operatorID, @replStatusID, @description, @lastOperatorKey, @lastUSN, @lastChange)
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_operatorLog_save
GO
-- =============================================
-- Name: net_operatorLogLast_get
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_operatorLogLast_get' AND type = 'P') DROP PROCEDURE net_operatorLogLast_get GO
CREATE PROCEDURE net_operatorLogLast_get @operatorKey uniqueidentifier, @inboundStatus bit, -- specifies whether we want last inbound or outbound status
@replStatusID tinyint OUTPUT, @description nvarchar(4000) OUTPUT, @lastOperatorKey uniqueidentifier OUTPUT, @lastUSN bigint OUTPUT, @lastChange bigint OUTPUT WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @operatorID bigint, @maxSeqNo bigint
SET @operatorID = dbo.operatorID(@operatorKey)
IF @operatorID IS NULL BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'operatorKey = ' + dbo.UUIDSTR(@operatorKey) GOTO errorLabel END
IF (@inboundStatus = 0) BEGIN SELECT @maxSeqNo = MAX([seqNo]) FROM [UDO_operatorLog] WHERE ([operatorID] = @operatorID) AND ([replStatusID] < 128 ) END ELSE BEGIN SELECT @maxSeqNo = MAX([seqNo]) FROM [UDO_operatorLog] WHERE ([operatorID] = @operatorID) AND ([replStatusID] >= 128 ) END
IF @maxSeqNo IS NOT NULL BEGIN SELECT @replStatusID = [replStatusID], @description = [description], @lastOperatorKey = [lastOperatorKey], @lastUSN = [lastUSN], @lastChange = [lastChange] FROM [UDO_operatorLog] WHERE ([operatorID] = @operatorID) AND ([seqNo] = @maxSeqNo) END RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_operatorLogLast_get
GO
-- =============================================
-- Name: net_operatorCert_get
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_operatorCert_get' AND type = 'P') DROP PROCEDURE net_operatorCert_get GO
CREATE PROCEDURE net_operatorCert_get @certSerialNo nvarchar(450) WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @operatorID bigint
SELECT @operatorID = [operatorID] FROM [UDO_operators] WHERE ([certSerialNo] = @certSerialNo)
IF (@operatorID IS NULL) BEGIN SET @error = 50016 -- E_invalidCert
SET @context = 'Certificate Serial Number not valid.' GOTO errorLabel END
SELECT [operatorKey], [certificate] FROM [UDO_operators] WHERE ([operatorID] = @operatorID)
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_operatorCert_get
GO
|