VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1049|回复: 8

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

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-17 01:00:01 | 显示全部楼层 |阅读模式
set @vSQL=@vSQL+'   delete from '+@FSrvName+'t_Item where FNumber='''+@FDeNumber+''' and FItemClassID=2001'

Execute(@vSQL)

以上动态SQL(@vSQL)中的字符串变量(@FDeNumber)值为:'03.001',执行后报错。
但字符串变量值中间没有点号时,如:'03001'则可正常执行。
求教解决办法,十万火急!!!
回复

使用道具 举报

0

主题

100

帖子

53.00

积分

新手上路

Rank: 1

积分
53.00
发表于 2020-1-21 22:18:02 | 显示全部楼层
FNumber是什么类型?
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-1-22 10:36:01 | 显示全部楼层
动态SQL跟"."肯定无关,查找其它错误.

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

--Execute(@vSQL)


unkmass老弟还在线. 真不简单,我要休息了.
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-1-22 14:54:01 | 显示全部楼层
应该是数据类型转换时出错
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-1-22 16:27:01 | 显示全部楼层
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
回复

使用道具 举报

0

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-24 11:09:01 | 显示全部楼层
-----------------------------------
Select @vSQL=''             --此处对变量进行赋值(可以为空,也可以是其它的值)
-----------------------------------

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

Execute(@vSQL)
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-24 11:18:02 | 显示全部楼层
declare @str varchar(10)
set @str='03.001'
select convert(decimal(5,3),@str)
回复

使用道具 举报

0

主题

66

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-1-24 11:45:01 | 显示全部楼层
报什么错呢?
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-1-24 14:18:01 | 显示全部楼层
应该是数据类型转换的缘故..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表