2011-01-16 6 views
0

以下のコードを参照してください。 パーツ#1と#2を別々に実行すると、それらは計画どおりに動作します。[InsertFlag]フィールドに「Y」という値が表示されます。小分けで実行すると2部のストアドプロシージャが成功し、一度に実行すると失敗します

しかし、sp全体を実行してそれらを一緒に実行すると、予想される 'Y'値が得られません。

私はこれらの2つのステートメントを置く順序に関係なく、#2が最初に実行されることを推測します。これは[SCD_Type2_EndDate]に値を設定し、#1がNULLのフィールドをテストすると失敗し、[InsertFlag]フィールドは更新されません。

私の推測が正しい場合、これらの2つのステートメントを強制的に実行する方法を見つける必要があります。最初のステートメントの後に「GO」を追加しようとしましたが、次のエラーが表示されます。

Msg 102, Level 15, State 1, Procedure etl_Update_SetExpiryDate_adName, Line 19 Incorrect syntax near ';'. Msg 102, Level 15, State 1, Line 23 Incorrect syntax near 'END'.

どうすればこの問題を解決できますか?

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE etl_Update_SetExpiryDate_adName 
AS 
BEGIN 
SET NOCOUNT ON; 

--1. 
UPDATE 
amlrr.wtName 
SET 
InsertFlag = 'Y' 
FROM 
amlrr.wtName wtN 
INNER JOIN amlrr.adName adN 
ON wtN.StageID = adN.StageID 
WHERE 
adN.SCD_Type2_EndDate IS NULL 
AND 
wtN.FullName <> adN.FullName 

GO 
--2. 

UPDATE 
amlrr.adName 
SET 
SCD_Type2_EndDate = getdate() 
FROM 
amlrr.adName adN 
INNER JOIN amlrr.wtName wtN 
ON adN.StageID = wtN.StageID 
WHERE 
adN.SCD_Type2_EndDate IS NULL 
AND 
adN.FullName <> wtN.FullName 








END 
GO 
+0

ガイドラインに従ってコードをフォーマットしてください。このように読むのは不可能です。 –

+0

私は同意します。私はそれが魔法のように自分自身をフォーマットするだろうと思った。私は次の投稿の前にそれを行う方法をお読みになるでしょう。 – fieldingmellish

+0

偽のアラーム、私はばかです。私は誤ってこのspのコピーをdboスキーマに作成し、amlrrスキーマでこのspを実行してテストしていました。 – fieldingmellish

答えて

1

GOの最初の更新ステートメントを削除します。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE etl_Update_SetExpiryDate_adName 
AS 
BEGIN 
SET NOCOUNT ON; 

--1. 
UPDATE 
amlrr.wtName 
SET 
InsertFlag = 'Y' 
FROM 
amlrr.wtName wtN 
INNER JOIN amlrr.adName adN 
ON wtN.StageID = adN.StageID 
WHERE 
adN.SCD_Type2_EndDate IS NULL 
AND 
wtN.FullName <> adN.FullName 

--2. 

UPDATE 
amlrr.adName 
SET 
SCD_Type2_EndDate = getdate() 
FROM 
amlrr.adName adN 
INNER JOIN amlrr.wtName wtN 
ON adN.StageID = wtN.StageID 
WHERE 
adN.SCD_Type2_EndDate IS NULL 
AND 
adN.FullName <> wtN.FullName 
END 
GO 
+0

GOを削除しても効果はありません。同じ問題。 – fieldingmellish

関連する問題