Sql 如何在存储过程中调用DB函数
我的数据库中有一个名为split的表值函数,我想在存储过程中使用它 当我说实体时,我指的是公司中的部门,正如你们所知,公司之间有部门、部门和其他部门。当用户创建实体时,它应该有一个父实体,即公司或另一个实体,并且可能有一个子实体,即另一个实体,例如it>开发>软件。。。等等 每个都有id。我将这些id存储在一列中,如图1,2,1所示。我需要在向用户显示时拆分它们 以下是我的功能:Sql 如何在存储过程中调用DB函数,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的数据库中有一个名为split的表值函数,我想在存储过程中使用它 当我说实体时,我指的是公司中的部门,正如你们所知,公司之间有部门、部门和其他部门。当用户创建实体时,它应该有一个父实体,即公司或另一个实体,并且可能有一个子实体,即另一个实体,例如it>开发>软件。。。等等 每个都有id。我将这些id存储在一列中,如图1,2,1所示。我需要在向用户显示时拆分它们 以下是我的功能: ALTER FUNCTION [dbo].[Split](@String varchar(50), @Delimi
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
一般而言
Select items From dbo.Split(YourColumnOrVariable,',')
在您的情况下,因为您在WHERE子句中使用的是as
WHERE (Employee.FK_EntityId IN (Select Items FROM dbo.Split(EntityHierarchy)))
--Items is the column name of the returning table
这是
下面是如何在存储过程中调用函数的示例。
您可以在存储过程中使用dbo.yourfunction
根据OP的意见和数据值进行更新
由于EntityHierarchy=20 10 30 26中的数据需要按空间分割
请在代码中尝试以下行:
从dbo.SplitEntityHierarchy“”中选择项时,Employee.FK_EntityId是一个表还是一个标量值函数?什么是函数定义?您想使用它做什么?它是一个表值函数,用于在同一列中拆分数据。您是否尝试在sp中使用该函数,并了解会发生什么情况?调用它dbo.split col name是否正确???如果我从dbo.split20,10写入select*,结果将是20@Abdulrahman_88你期望的结果是什么?你能告诉我们你的Entityhierarchy的值是什么样子的吗?那么你想得到全部4个值吗?然后执行此操作:其中Employee.FK_EntityId在dbo.SplitEntityHierarchy中的Select Items中表示您按空格进行拆分。col entityhierarchy包括公司的部门id,例如它包括开发、QA等。当用户选择任何子部门时,我希望向用户显示父部门,如:IT>开发>软件,以及存储在中的数量db@Abdulrahman_88让我们一步一步走。您可以将问题更新为1。表架构和示例值2。期望的答案:因此,这里的任何人都可以更清楚地帮助您找到答案。如果我从dbo.split20,10中编写select*from dbo.split20,10,结果将是20@Abdulrahman_88当前位置我想你需要找一个好的。您还应该将字符串作为dbo.split'20,10'传递给split函数
WHERE (Employee.FK_EntityId IN (Select Items FROM dbo.Split(EntityHierarchy)))
--Items is the column name of the returning table
DECLARE @Variable NVARCHAR(MAX)
SELECT @Variable = [Values] FROM tbl_test WHERE ID = @colnumber
SELECT * FROM dbo.ufn_SplitText(@Variable,',')