database - Writing SQL Insert Function -


i'm trying create sql function add entry table. before adding new user check or user isn't in table already. wrote code, can't save error: invalid use of side-effecting opreator 'insert' within function. last statement included within function must return statement.

create function [dbo].[createuser]     (     @username varchar(20),     @password varchar(20),     @email varchar(50),     @passwordquestion varchar(30),     @passwordanswer varchar(30)      ) returns bit/* datatype */     begin         if  (exists(select username users username=@username , password=@password))             return 1;         else             begin                 insert 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 

i'm beginner sql advice great!

in short, functions not allowed make changes sql server object. stored procedures can. minor changes, code sp.

create proc [dbo].[createuser]     (     @username varchar(20),     @password varchar(20),     @email varchar(50),     @passwordquestion varchar(30),     @passwordanswer varchar(30)      ) --returns bit/* datatype */     begin         if  (exists(select username users username=@username , password=@password))             return 1;         else             begin                 insert 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 can call thus:

exec dbo.createuser 'jim', 'teddy', 'jim@do.not.email', 'where', 'here'; 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -