我寫了一個函數來查找某個東西的基本單位(數據存儲在一個表中)。 這是表的樣子:函數總是返回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