56 lines
1.8 KiB
PL/PgSQL
56 lines
1.8 KiB
PL/PgSQL
DROP PROCEDURE IF EXISTS uspDeleteAllZaradekokAndZaradekNyelvekByTanulocsoportok
|
||
GO
|
||
|
||
CREATE PROCEDURE uspDeleteAllZaradekokAndZaradekNyelvekByTanulocsoportok
|
||
@pModifierId int
|
||
,@pTanuloCsoportIdList nvarchar(max)
|
||
,@pIsOsztalyList bit
|
||
|
||
AS
|
||
BEGIN
|
||
SET NOCOUNT ON;
|
||
|
||
IF(@pIsOsztalyList = 1) BEGIN
|
||
;WITH ZaradekCTE AS (
|
||
SELECT
|
||
z.ID
|
||
,IIF(tcs.C_KILEPESDATUM IS NULL OR z.C_ISKIVAGYATSOROLASIZARADEK = 'F' , 2, ROW_NUMBER() OVER (PARTITION BY C_TANULOCSOPORTID ORDER BY C_ISKIVAGYATSOROLASIZARADEK DESC, C_ROGZITESDATUMA DESC)) AS RN
|
||
FROM T_ZARADEK_OSSZES z
|
||
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID AND tcs.TOROLT = 'F'
|
||
WHERE tcs.ID IN (SELECT VALUE FROM string_split(@pTanuloCsoportIdList, ','))
|
||
AND z.TOROLT = 'F'
|
||
)
|
||
|
||
UPDATE z SET
|
||
z.TOROLT = 'T'
|
||
,z.SERIAL += 1
|
||
,z.LASTCHANGED = GETDATE()
|
||
,z.MODIFIER = @pModifierId
|
||
FROM T_ZARADEK_OSSZES z
|
||
INNER JOIN ZaradekCTE zcte ON zcte.ID = z.ID
|
||
WHERE zcte.RN > 1
|
||
|
||
END
|
||
ELSE BEGIN
|
||
UPDATE z SET
|
||
z.TOROLT = 'T'
|
||
,z.SERIAL += 1
|
||
,z.LASTCHANGED = GETDATE()
|
||
,z.MODIFIER = @pModifierId
|
||
FROM T_ZARADEK_OSSZES z
|
||
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID
|
||
WHERE tcs.ID IN (SELECT VALUE FROM string_split(@pTanuloCsoportIdList, ','))
|
||
AND z.TOROLT = 'F'
|
||
END
|
||
|
||
UPDATE zny SET
|
||
zny.TOROLT = 'T'
|
||
,zny.SERIAL = zny.SERIAL + 1
|
||
,zny.LASTCHANGED = GETDATE()
|
||
,zny.MODIFIER = @pModifierId
|
||
FROM T_ZARADEKNYELV_OSSZES zny
|
||
INNER JOIN T_ZARADEK_OSSZES z ON z.ID = zny.C_ZARADEKID
|
||
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID AND tcs.TOROLT = 'F'
|
||
WHERE zny.TOROLT = 'F' AND z.TOROLT = 'T'
|
||
END
|
||
GO
|