Hjælp til Stored Procedure med temp tabel og insert/update
Hejsa, Jeg er simpelhen gået sukker koldt, er der evt nogen som kan fortælle mig hvad jeg gør forkert i denne stored procedure da den ikke vil acceptere min else eller end, som om jeg ikke får sluttet den ordentligt.Eller kan det overhoved lade sig gøre på den måde jeg gør det eller et bud på en nemmere måde at skrive den på.
Det som den gør er at indsætte en ny linie i en tabel, men hvis den findes i forvejen skal den bare opdatere dennne, grunden til at jeg bruger temp tabel er at jeg ikke på forhånd ved hvad Jobno er men kan opsnappe dette udfra totalId nummeret.
Jeg har fået denne her til at virke hvis jeg kun ønsker at indsætte ny linie, men så snart jeg har sat min if exist / update så går det galt.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[SpInsertDisplaced]
(
@UserId varchar(15),
@Date smalldatetime,
@DisplacedQuantity float
)
AS
SET NOCOUNT ON
Create table #tmptable
(
UserId varchar(15),
Date smalldatetime,
StateId int,
PhaseCode varchar(15),
TaskCode varchar(15),
Quantity float,
DisplacedQuantity float,
TotalId int,
IsDisplaced bit
)
Insert Into [#tmptable]
(
[UserId], [Date],[StateId],[PhaseCode], [TaskCode],[Quantity], [DisplacedQuantity],[TotalId],[IsDisplaced]
)
values (@UserId, @Date, 2, 0, 0,0, @DisplacedQuantity, 50015, 1 )
IF exists (
Select *
from [TbJobJournal] tjj
where
[UserId] = @UserId
and [Date] = @Date
and [IsDisplaced] = 1
and [Jobno] in
(select Jobno from Tbjobs tj
INNER JOIN #tmptable t on t.TotalId = tj.totalId
where t.TotalID = tj.TotalId))
BEGIN
Update [TbJobJournal]
set [DisplacedQuantity] = @DisplacedQuantity
where
[UserId] = @UserId
and [Date] = @Date
and [IsDisplaced] = 1
and [Jobno] in
(select Jobno from Tbjobs tj
INNER JOIN #tmptable t on t.TotalId = tj.totalId
where t.TotalID = tj.TotalId)
Else BEGIN
Insert Into
TbjobJournal(JobNo, UserId, StateId, PhaseCode, Taskcode, Date, Quantity,DisplacedQuantity, IsDisplaced)
Select JobNo, UserId, StateId, PhaseCode, Taskcode, Date, Quantity, DisplacedQuantity, IsDisplaced
from #tmptable t
Inner Join tbJobs tj on tj.TotalId = t.TotalId
END