Pergunta : Entires duplicados a ser modificados no procedimento armazenado

olá!, o

We tem o SP dois que está fazendo objetivos duplicados para participar nos acesss que do período de revisão do bussinessorg da tabela o

columns é:  O

Business_ID
ReviewPeriod_ID

Aprrsaiallock.


here do acess_ID de Bussinessorgreviewperiod (PK) é PROCEDIMENTO do



HRBussiness_org_insert

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER do

1) HRBusiness_Org_Insert



- 2) BusinessOrgReviewPeriodAccess_INS de dois sp [dbo]. [HRBusiness_Org_Insert] o @parentLFT int do
AS

DECLARE
do
(@Parent_BusinessOrg_ID int do
, @BusinessOrg_Name do
nvarchar (128), int
do @RequestingEmployeeID do
), o @parentIndentation int do
, o int

if do @newBusOrgID do
((selecionar a contagem (businessOrg_id) do businessorg onde Name=@BusinessOrg_Name) = 0)
Begin
COMEÇAM TRANSACTION

            -- Introduzir o @parentLFT SELETO de Org
da barra-ônibus = o LFT
do
de BusinessOrg ONDE BusinessOrg_ID = o @Parent_BusinessOrg_ID

SELECIONAM o @parentIndentation = o Indentation
de BusinessOrg
ONDE BusinessOrg_ID = ATUALIZAÇÃO BusinessOrg
do @Parent_BusinessOrg_ID

AJUSTADO RGHT = RGHT + 2
ONDE RGHT > ATUALIZAÇÃO BusinessOrg
do @parentLFT

AJUSTADO LFT = LFT + 2
ONDE LFT > INSERÇÃO do @ParentLFT

no
VALUES
de BusinessOrg
(Parent_BusinessOrg_ID, recorte, LFT, RGHT, Ative, ImageFileName,
ImageFilePath, nome, CheckedOut_By, Created_By_EmpID, Created_DateTime) (@Parent_BusinessOrg_ID, @ParentIndentation do
+ 1, @ParentLFT do
+ 1, @ParentLFT do
+ 2,
1, ZERO do
,
“. /images/”, @BusinessOrg_Name do
, @RequestingEmployeeID do
, @RequestingEmployeeID do
, getDate do
())

SE @@ERROR > 0
BEGIN
RAISERROR 50001 'erro que introduz no @newBusOrgID AJUSTADO DO RETORNO de TRANSACTION
-1
END

do ROLLBACK do Br/> do table'< de BusinessOrg = no IDENT_CURRENT (“BusinessOrg")

            -- Criar os registros faltantes da encenação baseados na INSERÇÃO do pai org.
no @newBusOrgID do
SELECT
de BusOrgScenarioXref
(BusinessOrg_ID, Scenario_ID, ReviewPeriod_ID, Created_DateTime, Created_By_EmpID, Updated_DateTime, Updated_By_EmpID), no getdate do
x.Scenario_ID, do
x.ReviewPeriod_ID, do
(), no @RequestingEmployeeID do
, no getdate do
(), no x
WHERE
do @RequestingEmployeeID
FROM
BusOrgScenarioXref do
x.BusinessOrg_ID = @Parent_BusinessOrg_ID
E NÃO EXISTE (o
xx.*
do xx
de BusOrgScenarioXref ONDE x.Scenario_ID = xx. Scenario_ID
E x.ReviewPeriod_ID = xx.ReviewPeriod_ID
E xx.BusinessOrg_ID = @newBusOrgID
) o

SE introdução do erro do @@ERROR > 0
BEGIN
RAISERROR 50001 ' no ROLLBACK TRANSACTION
-1
END

do Br/> do table'< de BusOrgScenarioXref            -- Criar os registros faltantes dos config baseados na INSERÇÃO do pai org.
no @newBusOrgID do
SELECT
de BusinessOrgConfigOptionXref
(BusinessOrg_ID, ReviewPeriod_ID, ConfigOption_ID, IsSelected, Created_By_EmpID, Created_DateTime,
Updated_By_EmpID, Updated_DateTime), no @RequestingEmployeeID do
x.ReviewPeriod_ID, do
x.ConfigOption_ID, do
x.IsSelected, do
, no getdate do
(), no @RequestingEmployeeID do
, x
WHERE
do
FROM
BusinessOrgConfigOptionXref do getdate do
() x.BusinessOrg_ID = @Parent_BusinessOrg_ID
E NÃO EXISTE (o
xx.*
do xx
de BusinessOrgConfigOptionXref ONDE x.ReviewPeriod_ID = xx.ReviewPeriod_ID
E x.ConfigOption_ID = xx.ConfigOption_ID
E xx.BusinessOrg_ID = @newBusOrgID
) o

SE @@ERROR > 0
BEGIN
RAISERROR 50001 'que introduz no
de TRANSACTION
-1
END
do ROLLBACK do Br/> do table'< de BusinessOrgConfigOptionXref            -- Criar os registros faltantes dos config baseados na INSERÇÃO do pai org.
no @newBusOrgID do
SELECT
de BusinessOrgReviewPeriodAccess
(BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked),
p.ReviewPeriod_ID, p
WHERE
do
p.AppraisalsLocked
FROM
BusinessOrgReviewPeriodAccess p.BusinessOrg_ID = @Parent_BusinessOrg_ID
E NÃO EXISTE (o
pp.*
do pp
de BusinessOrgReviewPeriodAccess ONDE p.ReviewPeriod_ID = pp.ReviewPeriod_ID
E p.AppraisalsLocked = pp.AppraisalsLocked
E pp.BusinessOrg_ID = @newBusOrgID
) o
do
SE erro do @@ERROR > 0
BEGIN
RAISERROR 50001 'que introduz no
de TRANSACTION
-1
END
do ROLLBACK do Br/> do table'< de BusinessOrgReviewPeriodAccess            -- Criar o registro para os direitos da planta do talento baseados na INSERÇÃO do parent
no @newBusOrgID do
SELECT
de BusOrgMngrLvlRoleXref
(BusinessOrg_ID, ManagerLevel_ID, AuthorRole_ID, Created_By_Emp_ID, Created_Datetime,
Updated_By_Emp_ID, Updated_DateTime), no @RequestingEmployeeID do
p.ManagerLevel_ID, do
p.AuthorRole_ID, do
, no getdate do
(), no @RequestingEmployeeID do
, p
WHERE
do
FROM
BusOrgMngrLvlRoleXref do getdate do
() p.BusinessOrg_ID = @Parent_BusinessOrg_ID
E NÃO EXISTE (o
pp.*
do pp
de BusOrgMngrLvlRoleXref ONDE p.ManagerLevel_ID = pp.ManagerLevel_ID
E p.AuthorRole_ID = pp.AuthorRole_ID
E pp.BusinessOrg_ID = @newBusOrgID
) o

SE erro do @@ERROR > 0
BEGIN
RAISERROR 50001 ' introduzindo na INSERÇÃO DO RETORNO de TRANSACTION
-1
END

do ROLLBACK do Br/> do table'< de BusOrgMngrLvlRoleXref no
SELECT
c.BusOrgMngrLvlRoleXref_ID de BusOrgMngrLvlRoleSectionXref
(BusOrgMngrLvlRoleXref_ID, Section_ID, IsSelected, ColumnPosition, ordinal,
Created_By_Emp_ID, Created_DateTime, Updated_By_Emp_ID, Updated_DateTime), px. Section_ID do
,
px.IsSelected,
px.ColumnPosition, px do
. O ordinal, @RequestingEmployeeID do
, getdate do
(), @RequestingEmployeeID do
, c
do
FROM
BusOrgMngrLvlRoleXref do getdate do
() INTERNO JUNTA-SE a BusOrgMngrLvlRoleXref p EM 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 JUNTAR-SE ao px de BusOrgMngrLvlRoleSectionXref em p.BusOrgMngrLvlRoleXref_ID = px.BusOrgMngrLvlRoleXref_ID

SE o erro do @@ERROR > 0
BEGIN
RAISERROR 50001 'que introduz no ROLLBACK TRANSACTION
-1
END

do Br/> do table'< de BusOrgMngrLvlRoleSectionXref COMETE o
de TRANSACTION
            -- Retornar ID.
que o @newBusOrgID

End
Else
Begin
seleciona -1 como o objeto do ****** do
GO
/do _acess



USE do período de Businessorg_id
End


2) Bussinessorgreview [PMTP]:  StoredProcedure [dbo]. [BusinessOrgReviewPeriodAccess_INS] data do certificado: 06/30/2010 de 12:17: 50 PROCEDIMENTO do ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER [dbo]. [BusinessOrgReviewPeriodAccess_INS] o
AS

INSERT no @intBusinessOrgID do
SELECT de dbo.BusinessOrgReviewPeriodAccess (BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked), ReviewPeriod_ID do
(int
do @intBusinessOrgID do
), Br/>


please do UPCM'< do <> do código de status de 0
FROM ReviewPeriod
WHERE 'deixou-me saber modificações ao objectives
class= do

Resposta : Entires duplicados a ser modificados no procedimento armazenado

Eu presumo que você quer impedir a inserção se o registro exato já existe.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
ALTERAR O PROCEDIMENTO [dbo]. [BusinessOrgReviewPeriodAccess_INS]
(
      @intBusinessOrgID      int
)
COMO

INSERÇÃO em dbo.BusinessOrgReviewPeriodAccess (BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked)
SELECIONAR o @intBusinessOrgID, ReviewPeriod_ID, 0
De dbo.ReviewPeriod
ONDE código de status <> “UPCM”
-- Verific se fêz já não existido
E NÃO EXISTE (
 SELECIONAR 1 
 De dbo.BusinessOrgReviewPeriodAccess
 ONDE BusinessOrg_ID = @intBusinessOrgID
 E =ReviewPeriod_ID de ReviewPeriod_ID
 E AppraisalsLocked=0
)
Outras soluções  
 
programming4us programming4us