Fitnesse和dbFit:如何在SQL查询中转义冒号

时间:2013-10-22 12:49:58

标签: testing fitnesse dbfit

当我将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|

您是否知道如何在不使用第二种方法的情况下正确解决问题?

干杯, foxrafi

3 个答案:

答案 0 :(得分:3)

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

  

避免参数映射

     

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

     

| set option | bind symbols | false |

     

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

     

| query | select * from users | |名|用户名| | @hey | UUU |

     

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

答案 1 :(得分:1)

除了Mike的回答,您还可以使用绑定参数解决此问题。如果必须在同一查询中的其他位置使用绑定参数,这将非常有用。

!|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})。

答案 2 :(得分: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|