变量可用于构建参数化SQL语句,并让DbVisualizer在执行SQL时提示您输入值。如果您重复执行相同的SQL,只是希望在同一个SQL语句中传递新数据,这很方便。

变量语法

变量格式支持设置默认值,数据类型和一些选项,如下例所示:

${FullName||Andersson||String||where pk}$

以下是完整的变量语法:

${name || value || type || options}$

名称必需。这是出现在替代对话框中的名称。如果脚本中的多个变量具有相同的名称,则替换对话框仅显示一个,并且输入的值将应用于该名称的所有变量。

变量的默认值
类型
变量的类型:String,Boolean,Integer,Float,Long,Double,BigDecimal,Date,Time和Timestamp。另外DbVisualizer定义了:BinaryData和TextData(用于CLOB)。这用于确定如何在DbVisualizer和数据库服务器之间传递数据。如果没有指定类型,则将其视为整数。
选项
选项部分用于表示某些条件:
pk
表示该变量是最终SQL中主键的一部分。用一个关键图标表示
其中
定义该变量是WHERE子句的一部分。绿色的星形图标进一步说明了这种情况
noshow
该选项定义变量不应出现在替换对话框中。使用此选项时必须设置适当的值,除非它是输出变量(请参阅下面的dir)
nobind
指定该值应该作为最终语句中的文本替换,而不是替换为参数标记
dir = in | out | inout
与@call命令一起使用的变量的方向(对于其他用途它将被忽略)。指定函数返回值的变量必须声明为 dir = out,并且用于过程参数的变量必须使用与过程参数方向声明相匹配的dir类型。 in 是默认值。
预定义的变量
一些预定义的DbVisualizer变量可以在SQL中的任何地方使用。在将SQL发送到数据库服务器之前,这些数据被替换为实际值。这些变量的最终值是自解释的。

${dbvis-date}$
${dbvis-time}$
${dbvis-timestamp}$
${dbvis-connection}$
${dbvis-database-type}$

默认情况下,日期/时间变量值按照“ 工具属性” - >“数据格式”中的定义 格式化,但您也可以为变量的单次使用指定自定义格式,例如

${dbvis-date||||||format=[yyyyMMdd]}$

只有在监视生成结果集的SQL语句并且 监视器的Allowed Row Count > 0 时,才能使用以下变量 。输出格式为秒和毫秒。例如:2.018

${dbvis-exec-time}$
${dbvis-fetch-time}$

请注意,上述变量都不会出现在下面解释的变量替换窗口中。

SQL语句中的变量替换
要使可变处理在SQL Commander中工作,请确保 启用SQL主菜单中的 SQL-> Process Variables选项。

一个简单的变量可能如下所示:

${FullName}$

变量由开始和结束序列标识, ${ ... }$。(这些可以在工具属性中重新定义)。在执行期间,SQL Commander搜索变量并显示一个窗口,其中包含每个变量的名称和一个输入(值)字段。输入每个变量的值,然后按 执行。这将随后用值替换该变量,最后让数据库执行该语句。

考虑以下带有变量的SQL语句。这是最简单的变量使用,因为它只包含变量名称。在这种情况下,由于替换窗口无法从这些变量表达式中确定实际数据类型,因此还需要将文本值放在引号内。

INSERT
INTO
"SCOTT"."EMP"
VALUES
(
${EMPNO}$,
'${ENAME}$',
'${JOB}$',
${MGR}$,
'${HIREDATE}$',
${SAL}$,
${COMM}$,
${DEPTNO}$
)
执行上述SQL将导致显示以下窗口:

替代窗口与Form Data Editor具有相同的外观和功能,即可以在多行编辑器中排序,过滤,插入预定义的数据,复制,粘贴和编辑单元格以及其他许多功能。此外,替代窗口专门为替代窗口添加了两个新命令(工具栏中的最左侧和窗体右键单击菜单中):

设置默认值
这将设置该值为变量的默认值。如果未在变量中指定默认值,则会显示(空)
设置先前使用的值
将每个变量的值设置为上一次运行中使用的值(如果没有前一次运行的值,则此按钮被禁用)。
“ SQL预览” 区域显示所有变量都用值替换的语句。

这是一个更复杂的变量使用的例子。

update SCOTT.EMP set
EMPNO = ${EMPNO||7698||BigDecimal||pk ds=22 dt=NUMERIC }$,
ENAME = ${ENAME||BLAKE||String||nullable ds=10 dt=VARCHAR }$,
JOB = ${JOB||MANAGER||String||nullable ds=9 dt=VARCHAR }$,
MGR = ${MGR||7839||BigDecimal||nullable ds=22 dt=NUMERIC }$,
HIREDATE = ${HIREDATE||1981-05-01 00:00:00.0||Timestamp||nullable ds=7 dt=TIMESTAMP }$,
SAL = ${SAL||2850||BigDecimal||nullable ds=22 dt=NUMERIC }$,
COMM = ${COMM||(null)||BigDecimal||nullable ds=22 dt=NUMERIC }$,
DEPTNO = ${DEPTNO||30||BigDecimal||nullable ds=22 dt=NUMERIC }$
where EMPNO = ${EMPNO (where)||7698||BigDecimal||where pk ds=22 dt=NUMERIC }$
本例使用变量的全部功能。它实际上是由脚本生成的 SQL Commander-> INSERT COPY INTO TABLE 在数据选项卡网格中的右键菜单选项。

在执行由变量组成的语句时,DbVisualizer会将每个变量替换为内嵌文本的值或参数标记。使用参数标记通过语句传递数据比内联值更可靠和安全。这也是建议设置值的技术,因为数据库引擎可能会正确预编译这些语句。如果变量的类型部分已设置,并且没有指定nobind选项,则DbVisualizer将自动生成参数标记。

以下内容将被替换为参数标记:

${Name||rolle||String}$

这些将被替换为变量值:

${Name||rolle}$
${Name||rolle||String||nobind}$

DbVisualizer中的变量可以在语句中的任何地方使用。但是,如果最终语句在不支持的地方包含参数标记,则最终语句传递到数据库以执行时可能会出现问题。一个简单的例子是Oracle不接受表名的参数标记。要解决此问题,请清除变量表达式的类型部分或添加选项 nobind (请参见上文)。

更改分隔符字符
可以改变哪个字符序列应该被用作前缀,后缀和部分分隔符在变量表达式的工具- >工具特性,在变量常规选项卡下的类别

使用DbVisualizer变量的更多相关文章

  1. dbvisualizer参数设置

    6.13 可否完全禁用数据编辑? 可以. 方法: 在文本编辑器里打开文件 DBVIS-HOME/resources/dbvis-custom.prefs. 找出 dbvis.disabledataed ...

  2. 6 小时 Python 入门

    6 小时 Python 入门 以下操作均在 Windows 环境下进行操作,先说明一下哈 一.安装 Python 1.官网下载 Python 进入官网(https://www.python.org), ...

  3. 运行DbVisualizer报the java_home environment viariable does not point to a working 32-bit JDK OR JRE错误

    报这个错误的根本原因就是DbVisualizer和JDK的版本不一致,那么知道原因,修改起来就方便了,要么修改DbVisualizer的版本,要么修改JDK的版本. 1.JDK7 64位 那么就在Db ...

  4. 连接各种数据库神器———DbVisualizer

    作为开发人员,经常会遇到在不同的数据库环境中进行开发或者调试,所以针对每种数据库都要安装对应的客户端,不但要占用硬盘控件而且还要经常切换,无可厚非这是一项头疼并且麻烦的事情.有了DbVisualize ...

  5. 通过DbVisualizer 工具运行DB2存储过程实现INSERT语句主键自增造数

    1.需求简介 最近开发人员需要进行一批数据进行生产上SQL语句耗时过长问题的验证与优化.所以在性能测试库中批量建造数据,由于交易本身业务逻辑过于复杂以及需要各种授权,最后决定采用插表的方式完成. 2. ...

  6. Hive(四)Hive的3种连接方式与DbVisualizer连接Hive

    一.CLI连接 进入到 bin 目录下,直接输入命令: [root@node21 ~]# hive SLF4J: Class path contains multiple SLF4J bindings ...

  7. 使用PLSQL Developer和DbVisualizer、SQLDBx查询oracle数据库时出现乱码

    使用PLSQL Developer和DbVisualizer查询oracle数据库时,出现查询数据中文乱码情况. 查看了一下数据库编码格式select * from v$nls_parameters; ...

  8. In-Memory:在内存中创建临时表和表变量

    在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...

  9. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

随机推荐

  1. 利用Putty/Plink通过ssh tunnel端口转发实现FireFox和Chrome的加密代理访问

    如果需要使用远端服务器的DNS:在Firefox中about:config设置 network.proxy.socks_remote_dns ==> true 参考原文:http://think ...

  2. BZOJ 4327: JSOI2012 玄武密码 后缀自动机

    Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) # ...

  3. github+hexo(window10)

    一.申请github账户 二.先安装node.js.git 本地: 三.安装hexo(建立静态网页,用Markdown写博客) 1.创建文件地址 在合适的地方新建一个文件夹,用来存放自己的博客文件,比 ...

  4. 莫烦大大keras的Mnist手写识别(5)----自编码

    一.步骤: 导入包和读取数据 数据预处理 编码层和解码层的建立 + 构建模型 编译模型 训练模型 测试模型[只用编码层来画图] 二.代码: 1.导入包和读取数据 #导入相关的包 import nump ...

  5. Centos 修改主机名称

    Centos 配置主机名称: 1.首先查询一下当前的主机名称 [root@localhost~]# hostnamectl status Static hostname: ****** //永久主机名 ...

  6. Git 基础教程 之 远程仓库

    ①   注册GitHub账号 由于本地Git仓库和GitHub仓库之间的传输是SSH加密的,所以需要一点设置: a, 创建SSH Key         在用户主目录下,看是否有 .ssh 目录,若无 ...

  7. QT中tableview不能更新数据,why?

    model->select(); //model->removeColumn(0);++++++++++++++++++++ //model->setHeaderData(model ...

  8. [MySQL]--查询性能分析工具-explain关键字

    explain显示了MySQL如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. explain的使用方法很简单,只需要在select查询语句前面加上expl ...

  9. btrfs

    https://docs.docker.com/storage/storagedriver/btrfs-driver/ $ sudo cat /proc/filesystems | grep btrf ...

  10. junit4单元测试基础

    导入方法看如下截图就明白了:   新建测试用例 右击包名,点击新建,或者新建里的others,选择JUnit test case,如下图所示:   接下来,给测试类起名字和选择要测试的类,如下图所示: ...