SQL Server转义符及SQL Server存储过程和Eclipse编辑器下书写的不同

19 篇文章 0 订阅
14 篇文章 0 订阅
存储过程中SQL语句字符串如下:
'select bettime,case when g.type=1 then "DDTC" end "订单类型",checknumber,multitimes*betmoney "订单金额",g.poscode,issue,number,p.ceganame,checksn,multitimes
 from lot_wagertick as t  inner join lot_wagersn as k on t.wtid=k.wtid
  inner join lot_play as p on k.plid=p.plid  
  inner join lot_game as g on t.gaid=g.gaid
  where bettime=(select max(bettime) from lot_wagertick
    where stid in
   (select stid from sta_pos_change
   where ppid = (select ppid from pos_pos where imei='+@imei+') ) )
    and t.type=1 and g.type=1 and g.status=1'

以上存储过程执行时exec [dbo].[interface_querylastlottery_condition] '245764254'会报错:
消息207,级别16,状态1,第1 行
列名'DDTC' 无效。

原因:case when g.type=1 then "DDTC" end "订单类型"
没有对DDTC的引号用转义符转换,并且把DDTC外的双引号换成单引号,其他地方的双引号不变,即 变为case when g.type=1 then ''DDTC'' end "订单类型"(DDFC外是两对英文双引号)

PS: 默认情况下, '是字符串的边界符, 如果在字符串中包含', 则必须使用两个', 第1个'就是转义符;当SET QUOTED_IDENTIFIER OFF时, "是字符串边界符, 字符串中的"必须用两个"表示。

在SQL Server存储过程中需要转义符,在Eclipse中写不需要。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值