CREATE procedure Love_OnTopTables
@TableName varchar(50),
@IDName varchar(50),
@OnTopID int,
@IsTop int
AS
declare @SQLstr varchar(400)
declare @SQLstr1 varchar(400)
set @SQLstr=''
set @SQLstr=''
if @IsTop=1
begin
set @SQLstr ='update '+(@TableName)+' set OnTop=0 where '+(@IDName)+'<>'+cast(@OnTopID as int )
set @SQLstr1='update '+(@TableName)+' set OnTop=1 where '+(@IDName)+'='+cast(@OnTopID as int )
begin tran
exec (@SQLstr)
exec (@SQLstr1)
if @@error<>0
begin
return -1
rollback
end
else
return 1
commit tran
end
else
set @SQLstr ='update '+(@TableName)+' set OnTop=0 where '+(@IDName)+'='+cast(@OnTopID as int )
exec (@SQLstr)
if @@error<>0
return -1
else
return 1
GO
这里不需要用cast转换,直接用@OnTopID 试试
你需要的是拼一个字符串,所以要 CAST(@OnTopID AS NVARCHAR(5))