Commencez par commenter la déclaration @USERNAME dans le BEGIN
initial bloquer
-- DECLARE @USERNAME varchar(110)
puis gérez le NULL
valeur pour le USERNAME
comme dans le SELECT * INTO
bloquer
ISNULL(b.first_Name, '') + ' ' + ISNULL(b.last_name, '') AS USERNAME
Ajoutez ensuite le @USERNAME
dans le CURSEUR comme
DECLARE Cur_1 CURSOR
FOR SELECT CUser_id, User_Id, USERNAME FROM #temptable
OPEN Cur_1
DECLARE @CUser_id INT
DECLARE @User_Id INT
DECLARE @USERNAME VARCHAR (200) -- can set your required length
FETCH NEXT FROM Cur_1
INTO @CUser_id, @User_Id
Puis le @USERNAME
ne lancera pas le NULL
erreur
MISE À JOUR :Sur la base de vos commentaires, j'ai mis à jour la réponse :
Donc, vous voulez obtenir le @USERNAME
basé sur U_datetime >= @As_ONDATE
état.
Utilisez donc votre code existant et ajoutez un bloc supplémentaire à l'intérieur du CURSEUR pour obtenir le @USERNAME
valeur comme après le SELECT @REPORTDATE = U_datetime FROM inward_doc_tracking_trl where U_datetime >= @As_ONDATE
SELECT @USERNAME = ISNULL(b.first_Name, '') + ' ' + ISNULL(b.last_name, '') -- no need of column alias here
FROM inward_doc_tracking_trl a
INNER JOIN user_mst b on a.CUser_id = b.mkey
WHERE a.U_datetime >= @As_ONDATE