在将varchar值转换成数据类型int时失败_百度知道

问题:就像下面这样<br>create PROCEDURE [dbo].[mytest]<br>(<br> @myTable  varchar(100),<br> @myInt   int<br>)<br>AS<br> declare @strSQL   varchar(1000);<br> set @strSQL ='select * from ' + @myTable + ' where id=' + @myInt<br> exec (@strSQL)<br>执行:exec mytest 'soft',10<br>显示错误:消息 245,级别 16,状态 1,过程 mytest,第 8 行<br>在将 varchar 值 'select * from soft where id=' 转换成数据类型 int 时失败。<br>这样可以解决: <!--more-->

set @strSQL ='select * from ' + @myTable + ' where id=' + cast(@myInt as varchar(10))<br><br>但是两个都是int类型的,为什么还要转换?转换的话这不是要浪费性能吗?不转换姓名?怎么解决啊?

2014-10-17 11:56

提问者采纳

对的,要转换一次,将int转换为varchar,因为@strSQL是字符串,你不能直接将字符串跟数值类型拼接在一起,举个简单的例子:

来源URL:http://zhidao.baidu.com/question/919107364003257099.html