首页 > 解决方案 > 是否可以在 DBeaver SQL 语句中创建一个“if”来测试当前连接(Oracle、SQLServer 等)?

问题描述

我正在使用git extension配置 DBeaver 存储库,并制作一些脚本与我的团队共享。但我们使用多种数据库类型,例如 Oracle、SQL Server 和 DB2。我不想制作相同的脚本 3 次,每次都针对不同的数据库,因为某些功能是特定于数据库的。

是否有一些技巧可以做到这一点而不必重复使用数据库函数的脚本?像Firedac 的 SQL Dialect Abstraction 这样的东西

标签: dbeaver

解决方案


据我所知,DBeaver 没有指定当前数据库的环境变量。

你可以使用一个小技巧;在每个 DB 中创建 1 个字段自定义表,并使用 DB 类型(自定义值)的单个记录填充它,然后使用 aSQL CASE STATEMENT选择每次运行的 SQL 命令。

@编辑

我在DB configuration -> Connection settings -> Shell Commands 环境变量列表中找到,我不知道如何使用它们,但看看:

${host} - target host
${port} - target port
${server}   - target server name
${database} - target database
${user} - user name
${password} - password (plain)
${url}  - JDBC URL
${workspace}    - workspace path
${home} - user home path
${dbeaver_home} - application install path
${application.name} - application name
${application.version}  - application version
${local.ip} - local IP address

推荐阅读