为什么我无法打印DeptID
这是一个整数?
Alter proc spGetNameByID
@ID int,
@Name varchar(50) output,
@Gender varchar (50) output,
@DeptID int output
as
begin
Select
@Name = Name, @Gender = Gender ,
@DeptID = DeptID
from
tblEmployee
where
ID = @ID
end
Declare @GetName varchar(50), @GetGender varchar(50), @GetDeptID int
Execute spGetNameByID 1, @GetName out, @GetGender out, @GetDeptID out
Print 'Name of Employee is ' + @GetName + ' Gender is ' + @GetGender + 'Dept ID is ' + @GetDeptID
我的错误是
Msg 245,Level 16,State 1,Line 3
转换varchar值时转换失败'员工姓名是John性别是MaleDept ID是'数据类型int。
答案 0 :(得分:4)
@GetDeptID
是一个Integer值,您需要在将其连接到字符串之前将其转换为varchar
Print 'Name of Employee is ' + @GetName + ' Gender is '
+ @GetGender + 'Dept ID is ' + CAST(@GetDeptID AS VARCHAR(10))
如果在连接之前没有显式地将Int
值转换为varchar,INT
是更高的预先科学数据类型,SQL Server会尝试将您的字符串转换为INT
并失败,因此错误消息。
答案 1 :(得分:0)
考虑使用严重性为零的RAISERROR。这将提供与PRINT
类似的功能,并允许您使用替换参数。
RAISERROR('Name of Employee is %s Gender is %s Dept ID is %d', 0, 0, @GetName, @GetGender, @GetDeptID);
答案 2 :(得分:0)
您需要将数值转换为String,因为print只能按类型将唯一值理解为参数。
Print 'Name of Employee is ' + @GetName + ' Gender is ' + @GetGender + 'Dept ID is ' + Convert(varchar(18), @GetDeptID)