SQL Server 存储过程Varchar 转int失败

ALTER PROCEDURE p_name

@Id int
AS

BEGIN
declare @sql varchar(2000)
SET NOCOUNT ON;
begin
select @sql='Select Id,Name,Time,Type from Test..test a where Id='+@Id
end

exec(@sql)
return 0
END
GO

大家帮忙看一下,我这存储过程有什么问题??
我在页面上调用此存储过程,老是出错

[img]/upload/attachment/89457/c2bced69-c6f9-3193-8b7e-8a52df8b6b6b.jpg[/img]

知道的告诉我一下,多谢了!

ALTER PROCEDURE p_name

@Id int
AS

BEGIN
declare @sql varchar(2000)
SET NOCOUNT ON;
begin
select @sql='Select Id,Name,Time,Type from Test..test a where Id='+convert(varchar(12),@Id)
end

exec(@sql)
return 0
END
GO