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