データベースで呼び出されるテーブル値関数があり、split
それをストアド プロシージャで使用したいと考えています。
私が実体と言うとき、私は会社の部門を意味します。ご存知のように、会社には部門、セクション、およびその他の部門が相互に存在します。ユーザーがエンティティを作成するとき、会社または別のエンティティである親が必要であり、別のエンティティである子が必要です。たとえば、IT>開発>ソフトウェア...などです。
それぞれにIDがあります。これらの ID を 1,2,1 のように 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)))