f_update_login.srf 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. $PBExportHeader$f_update_login.srf
  2. global type f_update_login from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_update_login (integer arg_type)
  6. end prototypes
  7. global function integer f_update_login (integer arg_type);Int rslt = 1
  8. IF sys_if_network = 1 THEN RETURN rslt
  9. Long ll_cnt
  10. String ls_host, ls_ip
  11. String arg_msg
  12. IF arg_type = 1 THEN //登陆
  13. UPDATE sys_lck
  14. SET host = :ls_host,
  15. ip = :ls_ip,
  16. logintime = getdate(),
  17. chktime = getdate(),
  18. UserID = :publ_operator;
  19. ELSEIF arg_type = 2 THEN //更新
  20. SELECT count(*)
  21. INTO :ll_cnt
  22. FROM sys_lck
  23. Where UserID = :publ_operator;
  24. IF sqlca.SQLCode <> 0 THEN
  25. END IF
  26. IF ll_cnt = 0 THEN
  27. arg_msg = "其他用户已登录"
  28. rslt = 0
  29. GOTO ext
  30. END IF
  31. UPDATE sys_lck
  32. SET chktime = getdate()
  33. Where UserID = :publ_operator;
  34. ELSE //注销
  35. UPDATE sys_lck
  36. SET host = '',
  37. ip = '',
  38. logintime = NULL,
  39. chktime = NULL,
  40. UserID = '';
  41. END IF
  42. IF sqlca.SQLCode <> 0 THEN
  43. IF sqlca.SQLNRows = 0 THEN
  44. INSERT INTO sys_lck
  45. (host, ip, chktime, logintime, userid)
  46. Values (:ls_host, :ls_ip, GETDATE(), GETDATE(), :publ_operator);
  47. IF sqlca.SQLCode <> 0 THEN
  48. ROLLBACK;
  49. ELSE
  50. COMMIT;
  51. END IF
  52. ELSE
  53. ROLLBACK;
  54. END IF
  55. ELSE
  56. COMMIT;
  57. END IF
  58. ext:
  59. RETURN rslt
  60. end function