CREATE OR ALTER PROCEDURE dbo.USP_RegisterUser( @Username VARCHAR(64), @FirstName NVARCHAR(128), @LastName NVARCHAR(128), @DateOfBirth DATETIME, @Email VARCHAR(128), @Hash NVARCHAR(MAX) ) AS BEGIN SET NOCOUNT ON; SET XACT_ABORT ON; DECLARE @UserAccountId_ UNIQUEIDENTIFIER; BEGIN TRANSACTION; EXEC usp_CreateUserAccount @UserAccountId = @UserAccountId_ OUTPUT, @Username = @Username, @FirstName = @FirstName, @LastName = @LastName, @DateOfBirth = @DateOfBirth, @Email = @Email; IF @UserAccountId_ IS NULL BEGIN THROW 50000, 'Failed to create user account.', 1; END INSERT INTO dbo.UserCredential (UserAccountId, Hash) VALUES (@UserAccountId_, @Hash); IF @@ROWCOUNT = 0 BEGIN THROW 50002, 'Failed to create user credential.', 1; END COMMIT TRANSACTION; SELECT @UserAccountId_ AS UserAccountId; END