用Exec 执行动态SQL。动态SQL中字符串变量中有点号(.)的问题

windwather 2007-01-02 10:35:49
set @vSQL=@vSQL+' delete from '+@FSrvName+'t_Item where FNumber='''+@FDeNumber+''' and FItemClassID=2001'

Execute(@vSQL)

以上动态SQL(@vSQL)中的字符串变量(@FDeNumber)值为:'03.001',执行后报错。
但字符串变量值中间没有点号时,如:'03001'则可正常执行。
求教解决办法,十万火急!!!
...全文
343 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
caixia615 2007-01-03
  • 打赏
  • 举报
回复
应该是数据类型转换的缘故..
jacobsan 2007-01-03
  • 打赏
  • 举报
回复
报什么错呢?
Keson168 2007-01-03
  • 打赏
  • 举报
回复
declare @str varchar(10)
set @str='03.001'
select convert(decimal(5,3),@str)
云中客 2007-01-03
  • 打赏
  • 举报
回复
-----------------------------------
Select @vSQL='' --此处对变量进行赋值(可以为空,也可以是其它的值)
-----------------------------------

set @vSQL=@vSQL+' delete from '+@FSrvName+'t_Item where FNumber='''+@FDeNumber+''' and FItemClassID=2001'

Execute(@vSQL)
marco08 2007-01-02
  • 打赏
  • 举报
回复
declare @str varchar(10)
set @str='03.001'
select cast(@str as int)
--出错

declare @str varchar(10)
set @str='03001'
select cast(@str as int)
--OK
marco08 2007-01-02
  • 打赏
  • 举报
回复
应该是数据类型转换时出错
青锋-SS 2007-01-02
  • 打赏
  • 举报
回复
呵呵,马上也休息呀.晚安.
j9988 2007-01-02
  • 打赏
  • 举报
回复
动态SQL跟"."肯定无关,查找其它错误.

set @vSQL=@vSQL+' delete from '+@FSrvName+'t_Item where FNumber='''+@FDeNumber+''' and FItemClassID=2001'
print @vSQL --把print结果拿来执行,看错在那里.

--Execute(@vSQL)


sdhylj(青锋-SS)老弟还在线. 真不简单,我要休息了.
青锋-SS 2007-01-02
  • 打赏
  • 举报
回复
FNumber是什么类型?

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧