tengo una SP como tal (utilizando SQL Server):Utilizar UPDATE en procedimiento almacenado con parámetros opcionales
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
me gustaría solamente para establecer los valores si se pasan a la SP, es decir, no NULL. Se puede hacer esto?
This question parece sugerir que la única manera es usar consultas completamente separadas con condicionales, pero para 3 parámetros opcionales esto obviamente sería una pesadilla.
Coalesce() es la mejor práctica, no IsNull() – ErikE
No es la mejor práctica, que es la preferencia subjetiva como 'COALESCE' es ANSI. Ambas funciones actúan de manera diferente, para decir que siempre debe usar una sobre la otra ya que las mejores prácticas son incorrectas. Pero en este caso actúan de la misma manera. –
@ chris En realidad, 'ISNULL' es correcto aquí porque cualquiera de esos campos podría ser anulable. Si el parámetro en el procedimiento almacenado es nulo, y el valor actual para el campo también es nulo, obtendrá un error por no proporcionar al menos un valor no nulo a la función 'COALESCE'. Así que sí, tenías razón al usar 'ISNULL', pero no funcionan igual en este caso. –