首页 新闻 会员 周边 捐助

MS-SQL 触发器 “转换为数据类型为 int 的列时发生语法错误”

0
悬赏园豆:10 [已解决问题] 解决于 2012-03-20 16:01

触发器:

ALTER PROCEDURE ControllerTooEnterprise     --插入实际控制人的同时更新企业从业人员总数和企业规模
@EnterpriseID INT,
@Enterprise_People INT,
@TrainAll INT,
@Enterprise_Scale DECIMAL(9),
@ControllerName VARCHAR(50),
@ControllerTel VARCHAR(50)

AS
BEGIN
DECLARE @SQL1 VARCHAR(100);
DECLARE @SQL2 VARCHAR(100);
SET @SQL1='INSERT INTO Controller (ControllerName,ControllerTel,TrainAll,EnterpriseID) VALUES ('''+@ControllerName+''','''+@ControllerTel+''','''+@TrainAll+''','''+@EnterpriseID+''')'
SET @SQL2='UPDATE Controller SET (Enterprise_People='+@Enterprise_People+',Enterprise_Scale='+@Enterprise_Scale+') WHERE EnterpriseID='+@EnterpriseID
EXECUTE(@SQL1);
EXECUTE(@SQL2);
END

执行:

EXECUTE ControllerTooEnterprise 1503,888,888.88,0,'LEE JUN','13998989966'

消息:

将 varchar 值 'INSERT INTO Controller (ControllerName,ControllerTel,TrainAll,EnterpriseID) VALUES ('LEE JUN','15398959966','' 转换为数据类型为 int 的列时发生语法错误。

 

 

这到底是个什么情况呢? 头疼

Yellows的主页 Yellows | 初学一级 | 园豆:45
提问于:2012-03-20 15:19
< >
分享
最佳答案
0

试试

EXECUTE ControllerTooEnterprise 1503,888,888.88,0,'LEE JUN',13998989966

13998989966 不要用引号

收获园豆:10
freeyhy | 菜鸟二级 |园豆:212 | 2012-03-20 15:29

电话号码是字符型 对 他没影响 。 主要是 @TrainAll 明明传了 0 为什么执行的时候就成了 ''

Yellows | 园豆:45 (初学一级) | 2012-03-20 15:33

@小尾尾: ...

DECLARE @SQL2 VARCHAR(100);
SET @SQL1='INSERT INTO Controller (ControllerName,ControllerTel,TrainAll,EnterpriseID) VALUES ('''+@ControllerName+''','''+@ControllerTel+''','''+@TrainAll+''','''+@EnterpriseID+''')'

。。。

以上 的 @EnterpriseID 是INT类型,不需要引号了。

freeyhy | 园豆:212 (菜鸟二级) | 2012-03-20 15:38

@freeyhy: 用引号也没关系的 。问题不在这里!

Yellows | 园豆:45 (初学一级) | 2012-03-20 15:45

@小尾尾: 

1.这个是存储过程,不是触发器

2.

EXECUTE(@SQL1);
EXECUTE(@SQL2);

该为

print (@SQL1);

print (@SQL2);
你会 直观的发现 你 的 引号 用错地方了。

freeyhy | 园豆:212 (菜鸟二级) | 2012-03-20 15:53

@freeyhy: 谢谢你的回答,分给你吧  我已经找到解决办法了  用CAST 转换就行了  唔该晒!

Yellows | 园豆:45 (初学一级) | 2012-03-20 16:01
其他回答(1)
0

不知道

kwstu | 园豆:204 (菜鸟二级) | 2012-03-20 15:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册