前言

以下 sql、sql_begin、sql_commit、sql_call 需要声明 数据库 URL、驱动、用户名、密码。

```xml copy

  1. 超时时间单位为毫秒,如果你没有指定我们将默认 1000
  2. ```xml copy
  3. <param code="timeout" name="超时时间" dataType="NUMBER" data="1000"/>

已支持数据库

我们目前已经支持了下列数据库如果您需要操作其他数据库,请于gitee仓库提 lssues,我们会优先支持。不同数据库的驱动信息如下:

::: code-tabs#xml

@tab Mysql

```xml copy

  1. @tab:active PGsql
  2. ```xml copy
  3. <param code="url" name = "数据库地址" dataType="STRING" data="jdbc:postgresql://192.168.0.145:5432/postgres"/>
  4. <param code="driver" name = "驱动" dataType="STRING" data="org.postgresql.Driver"/>

@tab Orecle

```xml copy

  1. @tab Sql Server
  2. ```xml copy
  3. <param code="url" name="数据库地址" dataType="STRING" data="jdbc:sqlserver://127.0.0.1:1433;encrypt=true;trustServerCertificate=true;databaseName=test"/>
  4. <param code="driver" name="驱动" dataType="STRING" data="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>

:::

SQL 执行 sql

例如 select 等查询类 sql 等不涉及事务的 sql 可以直接使用 SQL,如果涉及到 UPDATE、DELETE、INSERT 等 DMI 类型的 sql 需要结合 SQL_Begin 和 SQL_commit 完成 DEMO 移步更新删除添加 SQL

事务说明

```xml copy <?xml version=”1.0” encoding=”UTF-8”?>

SELECT * FROM test_account where id = ${acctId}

  1. <img class="heardImg" src="/demo/sql.png">
  2. ## SQL_BEGIN 开启事务
  3. ::: tip 特殊提示
  4. begin 已经是全局的配置,不需要单独定义 action
  5. :::
  6. **_关于 sql、sql_begin、sql_commit 中事务 ID 的说明_**
  7. ```flow
  8. cond=>condition: 是否指定事务ID?
  9. process=>operation: 指定的事务ID
  10. e=>end: conKey = conKey = execute中code的值
  11. cond(yes)->process->e
  12. cond(no)->e

```xml copy <?xml version=”1.0” encoding=”UTF-8”?>

  1. ## SQL_COMMIT 提交事务
  2. ::: tip 特殊提示
  3. begin 已经是全局的配置,不需要单独定义 action
  4. :::
  5. ```xml copy
  6. <?xml version="1.0" encoding="UTF-8"?>
  7. <rule code="DEMO_SQL_commit" name="事务提交SQL" model="flow">
  8. <params>
  9. <param code="url" name="数据库地址" dataType="STRING" data="jdbc:postgresql://192.168.0.5:5432/postgres?currentSchema=public"/>
  10. <param code="driver" name="驱动" dataType="STRING" data="org.postgresql.Driver"/>
  11. <param code="username" name="用户" dataType="STRING" data="postgres"/>
  12. <param code="password" name="密码" dataType="STRING" data="postgres"/>
  13. <param code="timeout" name="超时时间" dataType="NUMBER" data="1000"/>
  14. </params>
  15. <flows>
  16. <flow code="RU001G1">
  17. <execute code="stp7" name="提交事务" actionCode="commit"/>
  18. </flow>
  19. </flows>
  20. </rule>

SQL_CALL 执行存储过程

```xml copy <?xml version=”1.0” encoding=”UTF-8”?>

select mycount3() as number

  1. ## 完整 DMI 操作
  2. ```xml copy
  3. <?xml version="1.0" encoding="UTF-8"?>
  4. <rule code="DEMO_SQLDMI" name="DMI类型SQL" model="flow">
  5. <params>
  6. <param code="yue" name="余额" dataType="NUMBER" data="999"/>
  7. <param code="url" name="数据库地址" dataType="STRING" data="jdbc:postgresql://192.168.0.5:5432/postgres?currentSchema=public"/>
  8. <param code="driver" name="驱动" dataType="STRING" data="org.postgresql.Driver"/>
  9. <param code="username" name="用户" dataType="STRING" data="postgres"/>
  10. <param code="password" name="密码" dataType="STRING" data="postgres"/>
  11. <param code="timeout" name="超时时间" dataType="NUMBER" data="1000"/>
  12. </params>
  13. <actions>
  14. <action code="upAccount" name="更新资金账号可用金额" type="SQL" dataType="MAP">
  15. <bound>
  16. UPDATE test_account set usable_amt = ${yue} WHERE id = 960307
  17. </bound>
  18. </action>
  19. <action code="loadAccount" name="查询资金账号" type="SQL" dataType="MAP">
  20. <params>
  21. <param code="acctId" name="账号" dataType="STRING"/>
  22. </params>
  23. <bound>
  24. SELECT * FROM test_account where id = ${acctId}
  25. </bound>
  26. </action>
  27. </actions>
  28. <flows>
  29. <flow code="RU001G1">
  30. <execute code="stp1" name="事务开启" actionCode="begin" conKey="con001"/>
  31. <execute code="stp2" name="更新资金账号可用金额为999" actionCode="upAccount" conKey="con001"/>
  32. <execute code="stp3" name="事务提交" actionCode="commit" conKey="con001"/>
  33. <execute code="stp4" name="查询资金账号" actionCode="loadAccount">
  34. <injects>
  35. <inject code="acctId" data="960307"/>
  36. </injects>
  37. </execute>
  38. <execute code="stp5" name="检查资金账号余额" actionCode="check">
  39. <checkItem code="check1" name="检查资金账号余额" msg="余额不对">
  40. <expression expressionType="relation" operationCode="eq" dataType="NUMBER" cover="${yue}" threshold="${stp4.usable_amt}"/>
  41. </checkItem>
  42. </execute>
  43. </flow>
  44. </flows>
  45. </rule>

sql 操作数据库 - 图1