ho un SP in questo modo (utilizzando SQL Server):Utilizzo di UPDATE in stored procedure con parametri facoltativi
ALTER PROCEDURE [dbo].[sp_ClientNotes_update]
@id uniqueidentifier,
@ordering smallint = NULL,
@title nvarchar(20) = NULL,
@content text = NULL
AS
BEGIN
SET NOCOUNT ON;
UPDATE tbl_ClientNotes
SET [email protected], [email protected], [email protected]
WHERE [email protected]
END
desidero impostare solo i valori se vengono passati SP, cioè non NULL. Può essere fatto?
This question sembra suggerire l'unico modo è utilizzare query completamente separate con condizionali, ma per 3 parametri opzionali questo sarebbe ovviamente un incubo!
Coalesce() è meglio pratica, non IsNull() – ErikE
Non è delle migliori pratiche, che è la preferenza soggettiva come 'COALESCE' è ANSI. Entrambe le funzioni agiscono in modo diverso, per dire che dovresti sempre usare l'una sull'altra in quanto le migliori pratiche sono sbagliate. Ma in questo caso agiscono allo stesso modo. –
@chris In realtà, 'ISNULL' è corretto qui perché uno di quei campi potrebbe essere annullabile. Se il parametro nella stored procedure è nullo e anche il valore corrente per il campo è nullo, si otterrà un errore per non fornire almeno un valore non nullo alla funzione 'COALESCE'. Quindi sì, hai usato correttamente 'ISNULL', ma in questo caso non si comportano nello stesso modo. –