変更されたテーブルの行のみを更新するストアドプロシージャを作成しました
SQLSERVER coalesce
関数を使用しました。
CREATE PROCEDURE update_only_changed
@FName varchar(50) = NULL,
@LName varchar(50) = NULL,
@CUST_DB VARCHAR(20)
AS
BEGIN
DECLARE @QUERY VARCHAR(255)
SET @QUERY = 'UPDATE ' + @CUST_DB + '..people SET LastName = COALESCE(@LName, LastName) WHERE id = 1'
EXEC (@QUERY)
END
GO
いくつかの考慮事項
動的SQLです
データベースの名前は、プロシージャのパラメータとして渡されます
したがって、SQLを実行すると、次の2つの状況が発生します。
EXEC(@ QUERY)
:I get the error saying: Must declare the scalar variable "@ LName". it does not interpret the variable that the command coalesce
EXEC @QUERY (without parentheses)
I get the error saying: The database 'UPDATE CUSTOMER' does not exist. Make sure the name is spelled correctly.
どうすればそれを機能させることができますか?
プロシージャを静的な更新ステートメントを使用して実行し、EXECを使用しない場合は、機能することを忘れないでください。
UPDATE CUSTOMER..people SET LastName = COALESCE(@LName, LastName) WHERE id = 1