f_connect_db.srf 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. $PBExportHeader$f_connect_db.srf
  2. global type f_connect_db from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_connect_db (long arg_connectionid, ref transaction arg_transaction, ref string arg_msg)
  6. end prototypes
  7. global function integer f_connect_db (long arg_connectionid, ref transaction arg_transaction, ref string arg_msg);Int rslt = 1
  8. String ls_dbms,ls_databasename
  9. String ls_logid,ls_logpass,ls_servername
  10. SELECT dbms,databasename,logid,logpass,servername
  11. INTO :ls_dbms,:ls_databasename,:ls_logid,:ls_logpass,:ls_servername
  12. FROM u_outerconnection
  13. Where connectionid = :arg_connectionid;
  14. IF sqlca.SQLCode <> 0 THEN
  15. arg_msg = '查询连接资料失败,'+sqlca.SQLErrText
  16. rslt = 0
  17. GOTO ext
  18. END IF
  19. //arg_transaction.DBMS = ls_dbms
  20. //arg_transaction.Database = ls_databasename
  21. //arg_transaction.LogID = ls_logid
  22. //arg_transaction.LogPass = ls_logpass
  23. //arg_transaction.ServerName = ls_servername
  24. arg_transaction.DBMS = "SNC SQL Native Client(OLE DB)"
  25. arg_transaction.Database = ls_databasename
  26. //arg_transaction.UserID = ProfileString (sys_inifilename, "database", "userid", "")
  27. //arg_transaction.DBPass = f_psw_bczh(ProfileString (sys_inifilename, "database", "dbpass", ""),1,sys_power_key)
  28. arg_transaction.LogID = ls_logid
  29. arg_transaction.LogPass = ls_logpass
  30. arg_transaction.ServerName = ls_servername
  31. arg_transaction.Lock = "RU"
  32. arg_transaction.AutoCommit = False
  33. arg_transaction.DBParm = "Database= '" + ls_databasename + "',PBTrimCharColumns='YES'"
  34. CONNECT USING arg_transaction;
  35. IF arg_transaction.SQLCode <> 0 THEN
  36. arg_msg = '连接失败,'+arg_transaction.SQLErrText
  37. rslt = 0
  38. GOTO ext
  39. END IF
  40. String strkey
  41. strkey = 'I~'m LongJoe'
  42. EXECUTE Immediate :strkey USING arg_transaction; // 验证语句
  43. EXECUTE Immediate "set transaction isolation level READ UNCOMMITTED" Using arg_transaction;
  44. EXECUTE Immediate 'SET DEADLOCK_PRIORITY low' Using arg_transaction;
  45. IF arg_transaction.SQLCode <> 0 THEN
  46. HALT;
  47. END IF
  48. ext:
  49. RETURN rslt
  50. end function