我在我的数据库中调用了一个表值函数split
,我想在存储过程中使用它。
当我说实体时,我的意思是公司中的部门,如您所知,公司之间有部门、部门和其他部门。当用户创建实体时,它应该有一个父实体,它是公司或另一个实体,并且可能有一个子实体,它是另一个实体,例如 IT>Development>software... 等。
每个人都有身份证。我将这些 ID 存储在一列中,例如 1、2、1。我需要在向用户展示时拆分它们。
这是我的功能:
ALTER FUNCTION [dbo].[Split](@String varchar(50), @Delimiter char(1))
returns @temptable TABLE (items varchar(50))
as
begin
declare @idx int
declare @slice varchar(50)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
这是我的存储过程:
alter procedure [dbo].[Emp_CompanyHirarchy]
@FK_CompanyId varchar(50),
@FK_EntityId varchar(50)
AS
SELECT
Employee.EmployeeId, Employee.EmployeeNo,
Employee.EmployeeName, Employee.EmployeeArabicName,
OrgEntity.EntityName, OrgCompany.CompanyName,
Employee.DOB, Employee.Email
FROM
Employee
INNER JOIN
OrgEntity ON Employee.FK_EntityId = OrgEntity.EntityId
INNER JOIN
OrgCompany ON OrgEntity.FK_CompanyId = OrgCompany.CompanyId
WHERE
(Employee.FK_EntityId IN (dbo.Split(EntityHierarchy)))