用户定义的分配

时间:2014-03-11 21:54:12

标签: mysql sql sql-server tsql

我正在进行构建用户定义函数的作业。当我运行这个select语句

SELECT * 
FROM DPSupervisorLookup('112233')

它给了我这个错误

  

Msg 8152,Level 16,State 14,Line 1字符串或二进制数据   截断。

我知道这个特定的员工ID不在数据库中,但是当我运行一个时,我仍然会遇到相同的错误。这是我的代码,以防我在某处出错。

Create Function DPSupervisorLookUp (@EmployeeID int)
Returns @Supervisors Table
(SupervisorEmployeeID Int,
SupervisorLastName Varchar(20),
SupervisorFirstName Varchar (20), 
SupervisorJobTitle Varchar(20))

As
begin
insert @Supervisors
select Distinct E2.EmployeeID as SupervisorEmployeeID, e2.LastName as     SupervisorLastName, E2.Firstname as SupervidorFirstName, E2.JobTitle as SupervisorJobTitle
from Employee e1
left outer join Employee e2 on e1.Supervisor = e2.EmployeeID

Return 
end

2 个答案:

答案 0 :(得分:0)

LastNameFirstnameJobTitle中的一个可能长度超过20个字符。请参阅Employee表格方案,并创建具有适当大小的@Supervisors表格字段。

答案 1 :(得分:0)

@Supervisors的列大小应该等于员工表

e.g 如果Employee.LastName的大小是50,那么@ Supervisors.SupervisorLastName的大小也应该是50