SQL Serverストアドプロシージャに問題があります。両方のテーブルに同じIDのデータがすでに存在するかどうかを確認しようとしています。それが最初に実行されるIFが存在しません。正しく動作しません。
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
は、第二のテーブルにデータがないと私は最初のテーブル内の別のレコードを追加した後、それが動作し、第2のテーブルに挿入していませんが、エラーはありません。
This is when I execute the procedure inside exists
This is data from table comments
どのdbmsを使用していますか? (このコードは製品固有です。) – jarlh
sql 2012.製品固有のものです。私は自分の手続きの一部に問題があります。そしてなぜ私は構成することができません –
EXISTSの中にあるSELECTステートメントだけを実行すると、どのレコードが表示されますか? –