2010-03-11 68 views
0

我需要編寫一個通用過程,該過程根據參數爲表中列的一列或不列的值設置值。任何想法如何去做。如何處理更新存儲過程中的可選參數

+0

你是什麼意思通用?它可以針對任何表格工作? –

+1

聽起來像你正在尋找創建動態SQL,你應該仔細考慮,然後再走下去的路徑 – Kane

回答

0

我猜你想要的東西,如:

CREATE PROC UpdateProc 
@RowID UNIQUEIDENTIFIER, 
@Parameter1 NVARCHAR(50) NULL, 
@Parameter2 INT NULL 

AS 

SET NOCOUNT ON 
GO 

IF @Parameter1 IS NOT NULL 
BEGIN 
    UPDATE MyTable 
    SET Column1 = @Parameter1 
    WHERE ID = @RowID 
END 

IF @Parameter2 IS NOT NULL 
BEGIN 
    UPDATE MyTable 
    SET Column2 = @Parameter2 
    WHERE ID = @RowID 
END 

它不覺得特別優雅,但如果你不知道/無法保證其參數將被傳遞我不知道的更好的方法比依次測試NULL

+0

我可以通過使用 @ Parameter1 NVARCHAR(50)NULL,設置ID = ISNULL(@ Parameter1,id) - 如果參數傳遞爲空,它將該值設置爲null – sam

+0

不知道我明白你的意思 - 你能給我多一點你想做的事情嗎? – PhilPursglove