f_update_fj_cnt.srf 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. $PBExportHeader$f_update_fj_cnt.srf
  2. global type f_update_fj_cnt from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_update_fj_cnt (long arg_billtype, long arg_scid, long arg_relid, long arg_relid_mx, ref string arg_msg)
  6. end prototypes
  7. global function integer f_update_fj_cnt (long arg_billtype, long arg_scid, long arg_relid, long arg_relid_mx, ref string arg_msg);Int rslt = 1
  8. Long cnt
  9. Long ll_ConnectionID
  10. IF Not (arg_billtype = 201 Or arg_billtype = 9102) THEN RETURN 1
  11. IF f_get_outerconnection(ll_ConnectionID,arg_msg) <> 1 THEN
  12. rslt = 0
  13. arg_msg = '更新附件数量失败,'+arg_msg
  14. GOTO ext
  15. END IF
  16. SELECT count(*) INTO :cnt
  17. FROM U_File
  18. WHERE relid = :arg_relid
  19. AND scid = :arg_scid
  20. AND relid_mx = :arg_relid_mx
  21. And billtype = :arg_billtype Using sys_fileDB_sqlca;
  22. IF sys_fileDB_sqlca.SQLCode <> 0 THEN
  23. rslt = 0
  24. arg_msg = '查询附件数量失败,'+sys_fileDB_sqlca.SQLErrText
  25. GOTO ext
  26. END IF
  27. CHOOSE CASE arg_billtype
  28. CASE 201
  29. UPDATE u_mtrldef
  30. SET fjcnt = :cnt
  31. Where mtrlid = :arg_relid Using sqlca;
  32. IF sqlca.SQLCode <> 0 THEN
  33. rslt = 0
  34. arg_msg = '更新产品附件数失败,'+sqlca.SQLErrText
  35. GOTO ext
  36. END IF
  37. CASE 9102
  38. END CHOOSE
  39. ext:
  40. IF rslt = 0 THEN
  41. ROLLBACK Using sqlca;
  42. ELSEIF rslt = 1 THEN
  43. COMMIT Using sqlca;
  44. END IF
  45. RETURN rslt
  46. end function