In short, Functions are not allowed to make any changes to ANY SQL Server object. Stored procedures can. With minor changes, your code is now an SP.
CREATE PROC [dbo].[CreateUser]
(
@Username varchar(20),
@Password varchar(20),
@Email varchar(50),
@PasswordQuestion varchar(30),
@PasswordAnswer varchar(30)
)
--RETURNS bit/* datatype */
AS
BEGIN
if (Exists(Select Username from Users where Username=@Username and Password=@Password))
return 1;
else
begin
INSERT INTO dbo.Users (Username, Password,
Email, UserId,
IsApproved, IsLockedOut,
IsOnline, CreationDate,
PasswordQuestion, PasswordAnswer) VALUES (@Username, @Password, @Email,
1, 0, 0, 0, GetDate(),
@PasswordQuestion, @PasswordAnswer);
return 0;
end
END
GO
And you can call it thus:
exec dbo.CreateUser 'Jim', 'Teddy', 'jim@do.not.email', 'Where', 'Here';