转换为数据类型为 int 的列时发生语法错误。
存储过程:
create proc Emporium_Insert
@E_Name nvarchar(100),
@E_address nvarchar(4000),
@E_explain nvarchar(4000),
@I_id int
as
/*
作用:插入商城信息
表名:Emporium
参数:@E_Name:商城名称,@E_address:商城地址,@E_explain:商城介绍,@I_id:联系人
时间:07.10.12
作者:Kmiaoer
*/
declare @StrSql nvarchar(4000)
if (@E_Name != '')
begin
set @StrSql = 'insert into Emporium (E_name,E_address,E_explain,I_id)values('''+@E_Name+''','''+@E_address+''','''+@E_explain+''','''+@I_id+''')'
print @StrSql
end
执行语句:
exec Emporium_Insert @E_name = 卓达商城,@E_address=开发区上海路56,@E_explain=大型房地产公司,@I_id=1
错误:服务器: 消息 245,级别 16,状态 1,过程 Emporium_Insert,行 18
将 nvarchar 值 'insert into Emporium (E_name,E_address,E_explain,I_id)values('卓达商城','开发区上海路56','大型房地产公司','' 转换为数据类型为 int 的列时发生语法错误。
求大家帮忙...实在没办法了
------解决方案--------------------declare @StrSql nvarchar(4000)
if (@E_Name != ' ')
begin
set @StrSql = 'insert into Emporium (E_name,E_address,E_explain,I_id)values( ' ' '+@E_Name+ ' ' ', ' ' '+@E_address+ ' ' ', ' ' '+@E_explain+ ' ' ', ' ' '+@I_id+ ' ' ') '
print @StrSql
end
更换为:
declare @StrSql nvarchar(4000)
if (@E_Name != ' ')
begin
set @StrSql = 'insert into Emporium (E_name,E_address,E_explain,I_id)values( ' ' '+@E_Name+ ' ' ', ' ' '+@E_address+ ' ' ', ' ' '+@E_explain+ ' ' ', ' +@I_id+ ') '
print @StrSql
end
------解决方案--------------------set @I_id = isnull(@I_id,0)
------解决方案--------------------错误显示 @I_id为空 先设置一下 如果为空就等于0
------解决方案--------------------create proc Emporium_Insert
@E_Name nvarchar(100),
@E_address nvarchar(4000),
@E_explain nvarchar(4000),
@I_id int
as
/*
作用:插入商城信息
表名:Emporium
参数:@E_Name:商城名称,@E_address:商城地址,@E_explain:商城介绍,@I_id:联系人
时间:07.10.12
作者:Kmiaoer
*/
SQL code
IF (@I_id='')
BEGIN
SET @Name = 0
END
------解决方案--------------------
上边中间部分的
IF (@I_id='')
BEGIN
SET @I_id = 0
END
有点错误
------解决方案--------------------
错误提示是列类型不匹配!你只有三列是nvarchar的!数据库里面也是这个类型吗??
------解决方案--------------------
@I_id换成convert(varchar(10),@I_id)
------解决方案--------------------
学习哈
顶