sql 在将 nvarchar 值 转换成数据类型 int 时失败。
假设有存储过程:proc_test2
create proc proc_test2
@Id int
begin
as
declare @sql varchar(max)
@sql = 'select * from test2 where 1=1'
if @Id <> 0
set @sql += ' and Id = ' +@Id
exec (@sql)
end
存储过程需要的参数是int类型,按道理直接传值(+@Id)是没有问题的,但是在执行存储过程的时候,却弹出
“sql 在将 nvarchar 值 转换成数据类型 int 时失败。”
这时候你需要转换一下就ok了!
正解是:set @sql += ' and Id = ' +Cast(@Id as nvarchar(50))
明星效应。很简单,在一个领域保持顶尖水平,比在一两个领域保持领先水平和五六个领域保持一般水准都要更有价值、并且收益更好。
有悖常识的真相:让未来更开放的方式,正是专注的去做好一件事情。这个世界上最成功的人,他们在某一领域获得成功之后,可通过经营杠杆进入任何他们想要涉足的领域。而这都得依赖于他们曾极致的专注在做好一件事情上。