Ich habe ein Problem mit einer gespeicherten SQL Server-Prozedur. Ich versuche zu überprüfen, ob in beiden Tabellen bereits Daten mit derselben ID vorhanden sind.Wenn nicht vorhanden funktioniert nicht richtig
ALTER PROCEDURE [dbo].[Objective_Comment_Insert]
@CompanyName AS NVARCHAR(100)
AS
BEGIN
IF NOT EXISTS (SELECT *
FROM dbo.[SB$Objective Comment] oc, [dbo].[comments] cc
WHERE CONVERT(INT, oc.[Employee No_]) = (SELECT u1.employee_no
FROM c0_intranet.dbo.users u1
WHERE u1.user_id = cc.user_id)
AND oc.[No_] = cc.comment_id)
BEGIN
INSERT INTO dbo.[SB$Objective Comment]([Comment By], [Comment], [Date Created],
[No_], [Comment On], [Employee No_])
SELECT
(SELECT u1.employee_no
FROM c0_intranet.dbo.users u1
WHERE u1.user_id = cs.user_id
),
CASE
WHEN cs.comment IS NULL
THEN ''
ELSE cs.comment
END,
CASE
WHEN cs.date_created IS NULL
THEN FORMAT(GETDATE(), 'yyyy-MM-dd')
ELSE FORMAT(cs.date_created, 'yyyy-MM-dd')
END,
cs.comment_id,
CASE
WHEN cs.comment_on IS NULL
THEN 0
ELSE cs.comment_on
END,
(SELECT u1.employee_no
FROM dbo.users u1
WHERE u1.user_id = cs.user_id)
FROM
dbo.comments cs
END
ELSE
BEGIN
UPDATE NAV_2017.dbo.[SB$Objective Comment]
SET [Comment By] = (SELECT u1.employee_no
FROM dbo.users u1
WHERE u1.user_id = cs.user_id),
[Comment] = CASE
WHEN cs.comment IS NULL
THEN ''
ELSE cs.comment
END,
[Date Created] = CASE
WHEN cs.date_created IS NULL
THEN FORMAT(GETDATE(), 'yyyy-MM-dd')
ELSE FORMAT(cs.date_created, 'yyyy-MM-dd')
END,
[No_] = cs.comment_id,
[Comment On] = CASE
WHEN cs.comment_on IS NULL
THEN 0
ELSE cs.comment_on
END,
[Employee No_] = (SELECT u1.employee_no
FROM dbo.users u1
WHERE u1.user_id = cs.user_id)
FROM dbo.comments cs, NAV_2017.dbo.[SB$Objective Comment] oc
WHERE
CONVERT(INT, oc.[Employee No_]) = (SELECT u1.employee_no
FROM dbo.users u1
WHERE u1.user_id = cs.user_id)
AND oc.[No_] = cs.comment_id
END
END
Wenn es zum ersten Mal ausgeführt wird, gibt es keine Daten in der zweiten Tabelle und es funktioniert, nachdem ich einen anderen Datensatz in der ersten Tabelle hinzufügen es nicht es in die zweite Tabelle einfügen, aber es gibt keine Fehler.
This is when I execute the procedure inside exists
This is data from table comments
Welche DBMS verwenden Sie? (Dieser Code ist produktspezifisch.) – jarlh
sql 2012. Es ist produktspezifisch. Ich habe ein Problem in existiert Teil meines Verfahrens. Und ich kann nicht konfigurieren, warum –
Welche Datensätze sehen Sie, wenn Sie nur diese SELECT-Anweisung ausführen, die innerhalb der EXISTS ist? –