在SQL Server中,下面的程序將工作假設像這樣的表:
CREATE TABLE MyBigTable(
ID INT NOT NULL PRIMARY KEY,
COLUMNA VARCHAR(100) NOT NULL,
COLUMNB VARCHAR(100) NOT NULL
)
GO
CREATE PROCEDURE UpdateMyBigTable(@ID INT, @ColumnAValue VARCHAR(100)=NULL, @ColumnBValue VARCHAR(100)=NULL)
AS BEGIN
UPDATE MyBigTable
SET COLUMNA = CASE WHEN @ColumnAValue IS NULL THEN COLUMNA ELSE @ColumnAValue END,
COLUMNB = CASE WHEN @ColumnBValue IS NULL THEN COLUMNB ELSE @ColumnBValue END
WHERE ID = @ID
AND ((COLUMNA <> @ColumnAValue AND @ColumnAValue IS NOT NULL) OR (COLUMNB <> @ColumnBValue AND @ColumnBValue IS NOT NULL));
END
GO
然而,這實際上並沒有通過這就是你問的領域不勝枚舉。沒有進入動態SQL,這在SQL Server中很難做到。
你可以發佈一個Java代碼的例子,以便更清楚你想要實現什麼。 – calcinai
這可以在您提到的任何DBMS中使用動態SQL來完成。 –