3

当我将 dbFit 与 Fitnesse 一起使用时,我遇到了在 SQL 查询中转义冒号和破折号的问题。

这样的声明不起作用:

!|Query|select to_char(my_birthday,'YYYY-MM-DD HH24:MI:SI') from family|

我需要用其他一些可接受的字符替换冒号和破折号,例如。

!|Query|select to_char(my_birthday,'YYYY_MM_DD HH24_MI_SI') from family|

你知道如何在不使用第二种方法的情况下正确解决它吗?

干杯,福斯拉菲

4

3 回答 3

3

我认为这就是你所需要的。来自http://dbfit.github.io/dbfit/docs/reference.html

避免参数映射

如果要防止 DbFit 将参数映射到绑定变量(例如,在 Sql Server 中执行包含 @ 符号的存储过程定义),请在运行查询之前禁用绑定符号选项。

|设置选项|绑定符号|false|

|执行| 插入用户(名称,用户名)值('@hey','uuu')|

|查询|从用户中选择 *| |姓名|用户名| |@嘿|uuu|

请记住在执行查询后重新启用该选项。您可以对 Execute 命令使用相同的技巧。

于 2013-10-24T14:50:51.270 回答
1

除了迈克的回答,你也可以通过使用绑定参数来解决这个问题。如果您必须在同一查询的其他位置使用绑定参数,这将非常有用。

!|DatabaseEnvironment|ORACLE|
|Connect|${HOSTNAME}|${USERNAME}|${PASSWORD}|

!|Query|!-select current_timestamp ts from dual-!|
|ts?|
|>>my_birthday_ts|

|set parameter|my_birthday_ts| <<my_birthday_ts|
#Set bind parameter :MI to string ':MI'
|set parameter|MI|:MI|
# and do it in the same way with :SS.
|set parameter|SS|:SS|

!|Query|!-select to_char(:my_birthday_ts, 'YYYY-MM-DD HH24'|| :MI || :SS) bds from dual-!|
|bds?|
|>>birthday_string|

请注意,您必须使用!- -!围绕您的查询,否则 FitNesse 会将连接运算符扩展到表格单元格。这种方式的主要缺点是您不能在查询中使用普通的 FitNesse 变量 (${varname})。

于 2013-12-18T11:43:13.700 回答
0
!|DatabaseEnvironment|ORACLE|
|Connect|${HOSTNAME}|${USERNAME}|${PASSWORD}|

!|Query|!-select current_timestamp ts from dual-!|
|ts?|
|>>my_birthday_ts|


!|Query|!-select to_char(:my_birthday_ts, 'YYYY-MM-DD HH24:'||'MI:'||'SS) bds from dual-!|
|bds?|
|>>birthday_string|
于 2015-01-13T14:02:38.137 回答