CREATE PROC user_reg
(
  @UserName               Varchar(35),
  @UserPassword           Char(16),
  @UserCname              Varchar(35),
  @UserEname              Varchar(90),
  @UserFace               Varchar(50),
  @UserAddress            Varchar(120),
  @UserTel                Varchar(30),
  @UserHandset            Varchar(30),
  @UserFax                Varchar(30),
  @UserPost               Varchar(20),
  @UserQq                 Varchar(20),
  @UserIcq                Varchar(20),
  @UserMsn                Varchar(120),
  @UserMail               Varchar(120),
  @UserUrl                Varchar(120),
  @UserLocus              Varchar(30),
  @RetExists              Char(1)               OUTPUT
)
AS
IF EXISTS(SELECT user_name FROM eda_user
          WHERE user_name=@UserName)
  SELECT @RetExists='1'
ELSE
BEGIN
 declare @trncnt int
 select @trncnt = @@trancount
 if @trncnt = 0
  begin transaction
 else
  save transaction p1

    SELECT @RetExists='0'
    INSERT INTO eda_user
    (
      user_name,
      user_cname,
      user_ename,
      user_face,
      user_address,
      user_tel,
      user_handset,
      user_fax,
      user_post,
      user_qq,
      user_icq,
      user_msn,
      user_mail,
      user_url,
      user_locus
    )
    VALUES
    (
      @UserName,
      @UserCname,
      @UserEname,
      @UserFace,
      @UserAddress,
      @UserTel,
      @UserHandset,
      @UserFax,
      @UserPost,
      @UserQq,
      @UserIcq,
      @UserMsn,
      @UserMail,
      @UserUrl,
      @UserLocus
    )
 if @@error <> 0
  goto error_handler
    Declare @maxid Int
    SELECT @maxid=MAX(user_id) FROM eda_user
   
    INSERT INTO eda_login
    (
      login_id,
      login_password
    )
    VALUES
    (
      @maxid,
      @UserPassword
    )
    if @@error <> 0
  goto error_handler
 if @trncnt = 0
  commit transaction

 return 1

 error_handler:
 begin
  if @trncnt = 0
   rollback transaction
  else
   rollback transaction p1
 end
END
GO