Questione : Entires duplicati da modificare nella procedura immagazzinata

ciao, il

We ha PS due che sta facendo gli obiettivi duplicati per prendparteere ai acesss che di periodo di revisione del bussinessorg della tabella il

columns è:  Il

Business_ID
ReviewPeriod_ID

Aprrsaiallock.


here del acess_ID di Bussinessorgreviewperiod (PK) è PROCEDURA del



HRBussiness_org_insert

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER del

1) HRBusiness_Org_Insert



- 2) BusinessOrgReviewPeriodAccess_INS [dbo]. [HRBusiness_Org_Insert] il @parentLFT int del
AS

DECLARE
del
(@Parent_BusinessOrg_ID int del
, @BusinessOrg_Name del
nvarchar (128), int
del @RequestingEmployeeID del
), il @parentIndentation int del
, il int

if del @newBusOrgID del
((selezionare il conteggio (businessOrg_id) a partire da businessorg in cui Name=@BusinessOrg_Name) = 0)
Begin
COMINCIANO TRANSACTION

            -- Inserire il @parentLFT PRESCELTO di Org
del bus = LFT
dal
di BusinessOrg IN CUI BusinessOrg_ID = il @Parent_BusinessOrg_ID

SELEZIONANO il @parentIndentation = Indentation
A PARTIRE da BusinessOrg
DOVE BusinessOrg_ID = AGGIORNAMENTO BusinessOrg
del @Parent_BusinessOrg_ID

STABILITO RGHT = RGHT + 2
DOVE RGHT > AGGIORNAMENTO BusinessOrg
del @parentLFT

STABILITO LFT = LFT + 2
DOVE LFT > INSERTO del @ParentLFT

nel
VALUES
(@Parent_BusinessOrg_ID, @ParentIndentation di BusinessOrg
(Parent_BusinessOrg_ID, rientranza, LFT, RGHT, Active, ImageFileName,
ImageFilePath, nome, CheckedOut_By, Created_By_EmpID, Created_DateTime) del
+ 1, @ParentLFT del
+ 1, @ParentLFT del
+ 2,
1, POSIZIONE DI SEGNALE MINIMO del
,
“. /images/„, @BusinessOrg_Name del
, @RequestingEmployeeID del
, @RequestingEmployeeID del
, getDate del
())

SE @@ERROR > 0
BEGIN
RAISERROR 50001 'errore che inserisce nel @newBusOrgID STABILITO DI RITORNO di TRANSACTION
-1
END

di RIDUZIONE DEI PREZZI del Br/> del table'< di BusinessOrg = in IDENT_CURRENT (“BusinessOrg")

            -- Generare le annotazioni mancanti del piano d'azione basate sull'INSERTO del genitore org.
nel @newBusOrgID del
SELECT
di BusOrgScenarioXref
(BusinessOrg_ID, Scenario_ID, ReviewPeriod_ID, Created_DateTime, Created_By_EmpID, Updated_DateTime, Updated_By_EmpID), nel getdate del
x.Scenario_ID, del
x.ReviewPeriod_ID, del
(), nel @RequestingEmployeeID del
, nel getdate del
(), nel x
WHERE
del @RequestingEmployeeID
FROM
BusOrgScenarioXref del
x.BusinessOrg_ID = @Parent_BusinessOrg_ID
E NON ESISTITO (
xx.*
dal xx
di BusOrgScenarioXref DOVE x.Scenario_ID = xx. Scenario_ID
E x.ReviewPeriod_ID = xx.ReviewPeriod_ID
E xx.BusinessOrg_ID = @newBusOrgID
)

SE l'inserimento di errori di/> BEGIN
0
del @@ERROR RAISERROR 50001 ' nella RIDUZIONE DEI PREZZI TRANSACTION
-1
END

del Br/> del table'< di BusOrgScenarioXref            -- Generare le annotazioni mancanti di config basate sull'INSERTO del genitore org.
nel @newBusOrgID del
SELECT
di BusinessOrgConfigOptionXref
(BusinessOrg_ID, ReviewPeriod_ID, ConfigOption_ID, IsSelected, Created_By_EmpID, Created_DateTime,
Updated_By_EmpID, Updated_DateTime), nel @RequestingEmployeeID del
x.ReviewPeriod_ID, del
x.ConfigOption_ID, del
x.IsSelected, del
, nel getdate del
(), nel @RequestingEmployeeID del
, il x
WHERE
del
FROM
BusinessOrgConfigOptionXref del getdate del
() x.BusinessOrg_ID = @Parent_BusinessOrg_ID
E NON ESISTITO (
xx.*
dal xx
di BusinessOrgConfigOptionXref DOVE x.ReviewPeriod_ID = xx.ReviewPeriod_ID
E x.ConfigOption_ID = xx.ConfigOption_ID
E xx.BusinessOrg_ID = @newBusOrgID
)

SE @@ERROR > 0
BEGIN
RAISERROR 50001 'che inserisce nel
di TRANSACTION
-1
END
di RIDUZIONE DEI PREZZI del Br/> del table'< di BusinessOrgConfigOptionXref            -- Generare le annotazioni mancanti di config basate sull'INSERTO del genitore org.
nel @newBusOrgID del
SELECT
di BusinessOrgReviewPeriodAccess
(BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked), il
p.ReviewPeriod_ID, il p
WHERE
del
p.AppraisalsLocked
FROM
BusinessOrgReviewPeriodAccess p.BusinessOrg_ID = @Parent_BusinessOrg_ID
E NON ESISTITO (
pp.*
dal pp
di BusinessOrgReviewPeriodAccess DOVE p.ReviewPeriod_ID = pp.ReviewPeriod_ID
E p.AppraisalsLocked = pp.AppraisalsLocked
E pp.BusinessOrg_ID = @newBusOrgID
)
del
SE errore di/> BEGIN
0
del @@ERROR RAISERROR 50001 'che inserisce nel
di TRANSACTION
-1
END
di RIDUZIONE DEI PREZZI del Br/> del table'< di BusinessOrgReviewPeriodAccess            -- Generare l'annotazione per le autorizzazioni di programma di talento basate sull'INSERTO del parent
nel @newBusOrgID del
SELECT
di BusOrgMngrLvlRoleXref
(BusinessOrg_ID, ManagerLevel_ID, AuthorRole_ID, Created_By_Emp_ID, Created_Datetime,
Updated_By_Emp_ID, Updated_DateTime), nel @RequestingEmployeeID del
p.ManagerLevel_ID, del
p.AuthorRole_ID, del
, nel getdate del
(), nel @RequestingEmployeeID del
, il p
WHERE
del
FROM
BusOrgMngrLvlRoleXref del getdate del
() p.BusinessOrg_ID = @Parent_BusinessOrg_ID
E NON ESISTITO (
pp.*
dal pp
di BusOrgMngrLvlRoleXref DOVE p.ManagerLevel_ID = pp.ManagerLevel_ID
E p.AuthorRole_ID = pp.AuthorRole_ID
E pp.BusinessOrg_ID = @newBusOrgID
)

SE errore di/> BEGIN
0
del @@ERROR RAISERROR 50001 ' inserendo nell'INSERTO DI RITORNO di TRANSACTION
-1
END

di RIDUZIONE DEI PREZZI del Br/> del table'< di BusOrgMngrLvlRoleXref nel
SELECT
c.BusOrgMngrLvlRoleXref_ID, px. Section_ID,
px.IsSelected,
px.ColumnPosition, px di BusOrgMngrLvlRoleSectionXref
(BusOrgMngrLvlRoleXref_ID, Section_ID, IsSelected, ColumnPosition, numero ordinale,
Created_By_Emp_ID, Created_DateTime, Updated_By_Emp_ID, Updated_DateTime) del
del
. Il numero ordinale, @RequestingEmployeeID del
, getdate del
(), @RequestingEmployeeID del
, c
del
FROM
BusOrgMngrLvlRoleXref del getdate del
() INTERNO UNISCE BusOrgMngrLvlRoleXref p SU p.ManagerLevel_ID = c.ManagerLevel_ID
E p.AuthorRole_ID = c.AuthorRole_ID
E p.BusinessOrg_ID = @Parent_BusinessOrg_ID
E c.BusinessOrg_ID = @newBusOrgID
                  INTERNO UNIRE il px di BusOrgMngrLvlRoleSectionXref su p.BusOrgMngrLvlRoleXref_ID = px.BusOrgMngrLvlRoleXref_ID

SE l'errore di/> BEGIN
0
del @@ERROR RAISERROR 50001 'che inserisce nella RIDUZIONE DEI PREZZI TRANSACTION
-1
END

del Br/> del table'< di BusOrgMngrLvlRoleSectionXref COMMETTE il
di TRANSACTION
            -- Restituire nuovo ID.
che il @newBusOrgID

End
Else
Begin
seleziona -1 come oggetto del ****** del
GO
/del _acess



USE [PMTP] di periodo di Businessorg_id
End


2) Bussinessorgreview:  StoredProcedure [dbo]. [BusinessOrgReviewPeriodAccess_INS] data dello scritto: 06/30/2010 di 12:17: 50 PROCEDURA del ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER [dbo]. [BusinessOrgReviewPeriodAccess_INS] il
AS

INSERT nel @intBusinessOrgID del
SELECT di dbo.BusinessOrgReviewPeriodAccess (BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked), ReviewPeriod_ID, il Br/>


please del
(int
del @intBusinessOrgID del
) del UPCM'< del <> di codice status di 0
FROM ReviewPeriod
WHERE 'lo ha lasciato conoscere le modifiche a objectives
class= del

Risposta : Entires duplicati da modificare nella procedura immagazzinata

Presumo che vogliate impedire l'inserto se l'annotazione esatta già esiste.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
ALTERARE LA PROCEDURA [dbo]. [BusinessOrgReviewPeriodAccess_INS]
(
      @intBusinessOrgID      int
)
AS

INSERTO in dbo.BusinessOrgReviewPeriodAccess (BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked)
SELEZIONARE il @intBusinessOrgID, ReviewPeriod_ID, 0
Da dbo.ReviewPeriod
DOVE codice status <> “UPCM„
-- Controllare se facesse già esistente
E NON ESISTE (
 SELEZIONARE 1 
 Da dbo.BusinessOrgReviewPeriodAccess
 DOVE BusinessOrg_ID = @intBusinessOrgID
 E =ReviewPeriod_ID di ReviewPeriod_ID
 E AppraisalsLocked=0
)
Altre soluzioni  
 
programming4us programming4us