从它的外观来看,我已经将所有内容包装在正确的BEGIN ... END语句中,但是代码遍历并执行几乎每一行代码。我也做过打印语句,以确保两个@rows变量实际上都包含大于0的值。任何人都可以帮我指出正确的方向吗?
IF @rows > '0'
--This agent's Tax ID number has been found to exist in AgentIdentification table
BEGIN
--Set UniqueAgentId according to mapped value from AgentIdentification table
SELECT @uniqueAgentId = UniqueAgentId
FROM AgentIdentification
WHERE AgentTaxId = @ssn
--Check to make sure this record exists in UniqueAgentIdToAgentId table
SELECT @rows = COUNT(*)
FROM UniqueAgentIdToAgentId
WHERE UniqueAgentId = @uniqueAgentId and AgentId = @agentId
PRINT @rows
IF @rows > 0
--Record exists in UniqueAgentIdToAgentId table
--Check to make sure correct UniqueAgentId is mapped to correct AgentId and vice versa
BEGIN
SELECT @agentIdRows = COUNT(AgentId)
FROM UniqueAgentIdToAgentId
WHERE UniqueAgentId = @uniqueAgentId and AgentId <> @agentId
SELECT @uniqueIdRows = COUNT(UniqueAgentId)
FROM UniqueAgentIdToAgentId
WHERE AgentId = @agentId and UniqueAgentId <> @uniqueAgentId
IF @uniqueIdRows = 0 AND @agentIdRows = 0
BEGIN
SET @returnValue = 1
END
ELSE IF @agentIdRows = 0 AND @uniqueIdRows > 0
BEGIN
SET @returnValue = 2
END
ELSE
BEGIN
SET @returnValue = 3
END
END
--Record does not exist in UniqueAgentIdToAgentId and will be added
ELSE
BEGIN
INSERT INTO UniqueAgentIdToAgentId (UniqueAgentId, AgentId, CompanyCode, LastChangeOperator, LastChangeDate)
VALUES (@uniqueAgentId, @agentId, @companyCode, @lastChangeOperator, @LastChangeDate)
SET @returnValue = 4
END
END
ELSE
BEGIN TRANSACTION
--This agent Tax ID number does not exist on AgentIdentification table
--Add record into Agent and AgentIdentification table
INSERT INTO Agent (EntityType, FirstName, LastName, NameSuffix, CorporateName, LastChangeOperator, LastChangeDate)
VALUES (@entityType, @firstName, @lastname, '', @corporateName, @lastChangeOperator, @LastChangeDate)
SELECT @uniqueAgentId = @@IDENTITY
SELECT UniqueAgentId
FROM Agent
INSERT INTO AgentIdentification (UniqueAgentId, TaxIdType, AgentTaxId, LastChangeOperator, LastChangeDate)
VALUES (@uniqueAgentId, @taxIdType, @ssn, @lastChangeOperator, @lastChangeDate)
--Check to make sure this record exists in UniqueAgentIdToAgentId table
SELECT @rows = COUNT(*)
FROM UniqueAgentIdToAgentId
WHERE UniqueAgentId = @uniqueAgentId and AgentId = @agentId
IF @rows > 0
--Record exists in UniqueAgentIdToAgentId table
--Check to make sure correct UniqueAgentId is mapped to correct AgentId and vice versa
BEGIN
SELECT @agentIdRows = COUNT(AgentId)
FROM UniqueAgentIdToAgentId
WHERE UniqueAgentId = @uniqueAgentId and AgentId <> @agentId
SELECT @uniqueIdRows = COUNT(UniqueAgentId)
FROM UniqueAgentIdToAgentId
WHERE AgentId = @agentId and UniqueAgentId <> @uniqueAgentId
IF @uniqueIdRows = 0 AND @agentIdRows = 0
BEGIN
SET @returnValue = 5
END
ELSE IF @agentIdRows = 0 AND @uniqueIdRows > 0
BEGIN
SET @returnValue = 6
END
ELSE
BEGIN
SET @returnValue = 7
END
END
--Record does not exist in UniqueAgentIdToAgentId and will be added
ELSE
BEGIN
INSERT INTO UniqueAgentIdToAgentId (UniqueAgentId, AgentId, CompanyCode, LastChangeOperator, LastChangeDate)
VALUES (@uniqueAgentId, @agentId, @companyCode, @lastChangeOperator, @LastChangeDate)
SET @returnValue = 8
END
COMMIT TRANSACTION
答案 0 :(得分:4)
我想这个:
ELSE
BEGIN TRANSACTION
需要这样:
ELSE
BEGIN
BEGIN TRANSACTION
而且:
COMMIT TRANSACTION
需要这样:
COMMIT TRANSACTION
END