我写了一个函数来查找某个东西的基本单位(数据存储在一个表中)。 这是表的样子:函数总是返回null
pcode packname baseunit
1 BU 0
2 DU 1
3 du1 2
4 tab 0
5 strip 4
6 box 5
7 cart 6
在这里,我想对于一个给定的代码返回的基本名称。例如,如果我用'7'调用函数,它应该返回“选项卡”。如果它是基本单位,则baseunit列包含值0,否则其base unit的pcode包含值。我想找到层次结构中最上面的项目。 我已经写了一个函数,它总是返回null。
alter function [dbo].[findbasepack1](@derpack varchar(10))
returns nvarchar(50)
as
begin
declare @baseunit numeric(18,0)
declare @pname nvarchar(50)
set @baseunit= (select baseunit from packing where [email protected])
if(@baseunit = 0)
begin
set @pname = (select packname from packing where pcode = @baseunit)
end
else
begin
set @pname = dbo.findbasepack1(@baseunit)
end
return @pname
end
GO
我已经尝试在递归和迭代,但它似乎并没有工作。如果有人能指出我出错的地方,这将会有很大的帮助。
有趣的语法。我总是使用'SELECT @panme = packname from ...'。 – 2014-09-04 06:55:06
您是否尝试过使用调试器来遍历代码? – 2014-09-04 06:55:35