0

私は実際に2つの問題を抱えています。以下の「Update O」は、SQL Server Management Studio (2005) から正常に実行されますが、Web サイト (C#/ASP.NET) から実行すると実行されません。元の作業コードとの唯一の違いは、LEFT コマンドを LEFT(EmployeeBirthdate, 4) に追加したことです。

最初のクエリは Web サイトを介して実行すると正常に実行されますが、2 番目のクエリは実行されないため、これは奇妙です。

ALTER PROCEDURE [dbo].[ValidateTransfers]
AS
BEGIN
    UPDATE p
    SET DATAREVISIONTYPE = 'Transfer'
    FROM abc as p
    WHERE DATAREVISIONTYPE  = 'Delete' AND
    (SELECT COUNT([OriginalUserId]) FROM abc WHERE DataRevisionType = 'Add' AND FirstName = p.FirstName 
    AND LastName = p.LastName AND EmployeeEmailAddress = p.EmployeeEmailAddress AND EmployeeBirthdate = LEFT(p.EmployeeBirthdate, 4))> 0

    UPDATE O
    SET DATAREVISIONTYPE = 'Modify' FROM abc as O
    WHERE DATAREVISIONTYPE = 'Add' AND
    (SELECT COUNT([OriginalUserId]) FROM abc WHERE DataRevisionType = 'Transfer' AND FirstName = O.FirstName 
    AND LastName = O.LastName AND EmployeeEmailAddress = O.EmployeeEmailAddress AND LEFT(EmployeeBirthdate, 4) = O.EmployeeBirthdate)> 0
END

私の 2 番目の問題は、set コマンドにさらにセットを追加しても、実際にはデータが変更されないことです。

UPDATE O
SET DATAREVISIONTYPE = 'Modify' 
    O.OriginalUserID = OriginalUserID, 
    O.EmployeeBirthdate = EmployeeBirthdate, 
    O.User_ID = User_ID
FROM abc as O
WHERE DATAREVISIONTYPE = 'Add' AND
(SELECT COUNT([OriginalUserId]) FROM abc WHERE DataRevisionType = 'Transfer' AND FirstName = O.FirstName 
AND LastName = O.LastName AND EmployeeEmailAddress = O.EmployeeEmailAddress AND LEFT(EmployeeBirthdate, 4) = O.EmployeeBirthdate)> 0

前もって感謝します!

編集:「変更」の背後にあるコンマは、不適切なジョブのコピーの貼り付けによるものです。残念ながら、それは問題ではありませんでした。

編集 2: また、特定のクエリを個別に実行すると、2 番目のクエリが完了するまでに約 1 分かかり、最初のクエリは瞬時に実行されます。一方、ストアド プロシージャ全体を強調表示して実行を押すと、即座に終了し、Web サイトから実行した場合と同じ問題が発生します。IE、正しいレコードが「転送」に設定されていますが、「変更」は機能しません

4

1 に答える 1

0

「FROM:」の前に余分なカンマがあります

UPDATE O
SET DATAREVISIONTYPE = 'Modify', FROM abc as O
于 2013-07-09T18:31:17.143 に答える