0
我使用table在sql中擁有部門級別結構。我已包含激活功能&取消激活部門。僅當父級在層次結構中處於活動狀態時才激活子級
現在我想如果有人想激活孩子,那麼它的父母應該被激活,否則它應該返回-11。
我已經做了一個程序,但它不爲@Is_Active flag ='Y'工作,如果提供了這個'Y',那麼應該通過程序來激活孩子。
-- Add the parameters for the stored procedure here
ALTER PROCEDURE DepartmentSetStatus(@DEPARTMENT_ID nvarchar(1000), @Is_Active char(1))
--[DepartmentSetStatus] "1",'Y'
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
declare @count int
SET NOCOUNT OFF;
if @Is_Active='Y'
begin
WITH Vals1 AS (
SELECT *
FROM [I_DEPARTMENT]
WHERE DEPARTMENT_ID in (select Data from dbo.Split(@DEPARTMENT_ID,','))
UNION ALL
SELECT t1.*
FROM [I_DEPARTMENT] t1 INNER JOIN
Vals1 v ON t1.DEPARTMENT_ID = v.PARENT_ID
)
select @count=count(*) from Vals1 where is_active = 'N'
if @count>0
begin
RETURN -11
end
end
;
WITH Vals AS (
SELECT *
FROM [I_DEPARTMENT]
WHERE DEPARTMENT_ID in (select Data from dbo.Split(@DEPARTMENT_ID,','))
UNION ALL
SELECT t1.*
FROM [I_DEPARTMENT] t1 INNER JOIN
Vals v ON t1.PARENT_ID = v.DEPARTMENT_ID
)
UPDATE I_Department
SET Is_Active= @Is_Active
WHERE DEPARTMENT_ID IN (select DEPARTMENT_ID from Vals)
END
請建議我如何實現所需的輸出。
在此先感謝