This message is in addition to Chad's 9/19/08 post. This will allow users to opt out from Opt In Email lists from Dynamic Forms:
Create Procedure {databaseOwner}[{objectQualifier}DataSprings_OptInEmail_RemoveFromDynamicForms]
@FirstName nvarchar(200),
@LastName nvarchar(200),
@EmailAddress nvarchar(200),
@CategoryName nvarchar(200),
@PortalID int
AS
Declare @CatID UniqueIdentifier
Declare @OptID UniqueIdentifier
--If users already exists then don't insert them
IF (SELECT count(*) FROM {databaseOwner}[{objectQualifier}DataSprings_OptInEmail] WHERE EmailAddress = @EmailAddress AND InActive = 0) =0
BEGIN
Insert Into {databaseOwner}[{objectQualifier}DataSprings_OptInEmail] (FirstName, LastName, EmailAddress, [DateTime], IsVerified, InActive, PortalID)
Values(@FirstName, @LastName, @EmailAddress, GetDate(), -1, 0, @PortalID)
END
Set @OptID = (Select TOP 1 OptInEmailID from {databaseOwner}[{objectQualifier}DataSprings_OptInEmail] where Emailaddress = @EmailAddress)
Set @CatID = (Select Top 1 OptInCategoryID from {databaseOwner}[{objectQualifier}DataSprings_OptInCategory] where Category = @CategoryName)
--print @OptID
--print @CatID
--We now have the opt in email ID and the opt in category ID
--Add the user to the opt in email categoryID
IF (SELECT count(*) FROM {databaseOwner}[{objectQualifier}DataSprings_OptInEmailCategory] WHERE OptInEmailID = @OptID AND OptInCategoryID = @CatID AND InActive = 0) = 1
BEGIN
UPDATE {databaseOwner}[{objectQualifier}DataSprings_OptInEmailCategory]
Set OptIn = 0
Where OptInEmailID = @OptID
AND OptInCategoryID = @CatID
END
GO