J'ai une table qui contient deux colonnes qui pourraient être nulles.champ de mise à jour qui pourrait être null dans la procédure stockée
Je souhaite créer une procédure stockée pour modifier cette table. dans la procédure stockée Je l'ai fait:
@ID INT,
@newBuildingName NVARCHAR(250),
@newLocation NVARCHAR(3000),
@newImage VARBINARY(MAX) = NULL,
@newNote NVARCHAR(3000) = NULL,
@result BIT OUTPUT
Non, je ne peux pas décider à ce stade, si l'utilisateur a entré des valeurs newImage
ou newNote
champs, donc je ne peux pas dire
UPDATE myTable SET image = @newImage, note = @newNote
parce que ces deux champs pourraient déjà avoir des valeurs et de cette façon je supprimerais ces vaules,
que devrais-je faire?
Ce que je chose est faire une déclaration if-else
et essayer si le premier champ est nul donc faire ma mise à jour sans elle et si mon deuxième champ est nul alors faire ma déclaration de mise à jour sans et si aucun d'entre eux est null alors faites une mise à jour complète mais je pense que c'est un processus très teduis.
Existe-t-il une autre solution plesae?
Merci à l'avance
mais dans ce cas si ce n'est déjà null, il n'y aura pas de mise à jour, quelle est la solution pease? –
L'échange des valeurs, c'est-à-dire 'image = Coalesce (@newImage, image)' mettra à jour le champ si la nouvelle valeur n'est pas NULL. La méthode explicite serait d'ajouter un bit pour chaque champ vague et d'utiliser quelque chose comme 'image = case quand @SetImage = 1 puis @newImage else image end'. – HABO
Coalesce paramètres échangés comme HABO suggéré –