存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
来源:互联网 发布:数据分析怎么写 编辑:程序博客网 时间:2024/05/16 19:18
碰到过这个问题:当时的程序大致如下:
create procedure myproc @tablename varchar(20), @idnum int
as
declare @sqlstr varchar(200)
set @sqlstr='select * from '+@tablename+' where id='+@idnum
execute (@sqlstr)
Go
在执行上述存储过程的时候(execute myproc 'test',2),系统报告"varchar转换为int类型时错误"。
错误的原因在于set @sqlstr='select * from '+@tablename+' where id='+@idnum这一行。
改正的方法可以有几种:
1:直接将@idnum 定义为varchar类型的数据即可
2:在存储过程中加入一个@varchar 类型的变量,先将@idnum赋值给它,在用其代替@idnum即可。即:
create procedure myproc @tablename varchar(20), @idnum int
as
declare @sqlstr varchar(200)
declare @tempstr varchar(10)
set @tempstr=@idnum
set @sqlstr='select * from '+@tablename+' where id='+@itempstr
execute (@sqlstr)
Go
由此可见发生错误的原因可能在于生成@sqlstr时,出现varchar与int(numeric)类型的操作时(注意varchar在前),系统会尝试将varchar转换为int(或numeric),因而出现错误。
- 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
- 存储过程,从数据类型 nvarchar 转换为 int 时出错
- 编写存储过程时,出现“转换成数据类型 int 时失败”错误的解决方法
- varchar转换为int
- 数据库异常 从varchar转换为int出错[0x80040a07]
- SQL Server中类型转换(将varchar值转换为数据类型为int的列时发生语法错误)
- sql将varchar类型转换为Int类型排序
- MySQL varchar转换为int
- Sql Varchar转换为Int
- 从数据类型 varchar 转换为 float 时出错
- 将数据类型 varchar 转换为 bigint 时出错
- 从数据类型varchar转换为real时出错
- 从数据类型 varchar 转换为 bigint 时出错。
- sqlserver中将varchar类型转换为int型
- 将 varchar 转换为数据类型 numeric 时出现算术溢出错误
- mysql varchar类型转换int类型
- SQLServer转换SQL中的数据(将数据类型 varchar 转换为 numeric 时出错)
- SQLServer转换SQL中的数据(将数据类型 varchar 转换为 numeric 时出错)
- Struts教程
- 以后新的内容都转向 http://fytzzh.cublog.cn/ 了
- 转发客户端
- 第四天:表单数据(一)
- 78 bytes in Northwind.Categories.Picture
- 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
- 渐变色填充
- 关于的用法mktemp
- [Oracle]性能优化调整(三)--调整重做机制
- 深入浅出之正则表达式(一)
- 在DEBIAN上如何配置APACHE2.X
- 流年随想
- 深入浅出之正则表达式(二)
- 关于筝