变量可用于构建参数化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 (请参见上文)。

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

最新文章

  1. Mysql操作语句
  2. C++ 引用计数技术及智能指针的简单实现
  3. postman发送带cookie的http请求
  4. JavaScript使用DeviceOne开发实战(二) 生成调试安装包
  5. 一组PHP可逆加密解密算法
  6. 网络流 最大流HDU 3549
  7. linux远程登录(Telnet、SSH)
  8. BZOJ1008 /乘法原理+快速幂 解题报告
  9. IOS应用程序生命周期的AppDelegate详解
  10. PHP正则表达式 验证电子邮件地址
  11. Python之路:Python 基础(二)
  12. 更好地认知Azure
  13. charAt()的功能
  14. hdu 2896 病毒侵袭 AC自动机(查找包含哪些子串)
  15. jmeter之regular expression extractor ,并循环调用匹配到的多个值
  16. Azure CosmosDB (7) 分区键Partition Key
  17. Oracle 11g R2创建数据库之DBCA静默方式
  18. Centos7安装OpenLDAP
  19. jsp导入数据库数据写法(模板)
  20. POJ1734无向图求最小环

热门文章

  1. Linux 重要文件目录
  2. class path resource [processes/] cannot be resolved to URL because it does not exist
  3. Java导出Excel(附完整源码)
  4. linux配置Jdk1.8
  5. python-写入csv 文件
  6. 在UEditor编辑器的工具栏上加一行文字
  7. Django链接Mysql 8.0 出现错误(1045:Access denied for user 'root'@'localhost' (using password: NO) 的一种解决方法
  8. $GPRMC解析
  9. Linux命令(三)——用户、群组管理命令
  10. SpringMVC实战(三种映射处理器)