锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2022-10-10 20:30:00 sitemap ddtc114eca数字三极管

存储过程中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: 默认情况下, 边界符是字符串, 若在字符串中包含, 必须使用两个, 第一个是转义符;SET QUOTED_IDENTIFIER OFF时, "是字符串边界符, 字符串中的"必须用两个"表示。

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


相关文章