首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Database.HDBC是否支持命名参数?

Database.HDBC是否支持命名参数?
EN

Stack Overflow用户
提问于 2013-10-02 21:15:17
回答 1查看 130关注 0票数 2

我不喜欢依赖位置参数,使用HDBC可以做到吗

我可以看到将[(String, SqlValue)]而不是[SqlValue]作为参数传递给this package的各种执行函数。

简而言之,我宁愿

代码语言:javascript
复制
select 
  t.f1
  , t.f2
  , t.f3
from
  schema.table t
where
 t.f1 > @param1
 and t.f2 < @param2

代码语言:javascript
复制
select 
  t.f1
  , t.f2
  , t.f3
from
  schema.table t
where
 t.f1 > ?
 and t.f2 < ?
EN

回答 1

Stack Overflow用户

发布于 2013-10-16 03:29:03

不是直接使用hdbc,而是在莎士比亚文本包的帮助下:

代码语言:javascript
复制
quickQuery cn (T.unpack
                 [st|select bar, baz, foo
                       from table1 r
                      inner join location l on r.locat_id = l.location_id
                      where r.record_id = #{pageIdxId page}
                        and foo > #{var1 + var2}
                      order by 1|]) []

注意#{}占位符中的haskell变量和表达式。

不过,使用字符串拼接时要小心。

对字符串值使用sql转义函数。

代码语言:javascript
复制
sqlEscape :: Text -> Text
sqlEscape = T.replace "'" "''" 

然后

代码语言:javascript
复制
[st|update foo set bar = '#{sqlEscape someString}' where recid = #{myRecId}|]

或者,如果您能够胜任这项任务,则可以使用莎士比亚文本库,并对其进行少量更改,以自动转义所有isString类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19137803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档