sql >> Database >  >> RDS >> Sqlserver

Kan geen NULL-waarden invoegen in kolom 'USERNAME', tabel 'tempdb.dbo.#temptable error

Geef eerst commentaar op de @USERNAME-declaratie in de eerste BEGIN blok

 -- DECLARE @USERNAME varchar(110)

behandel vervolgens de NULL waarde voor de USERNAME zoals in de SELECT * INTO blok

 ISNULL(b.first_Name, '') + ' ' + ISNULL(b.last_name, '') AS USERNAME

Voeg vervolgens de @USERNAME . toe in de CURSOR als

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

Dan de @USERNAME gooit de NULL niet weg fout

UPDATE :Op basis van uw opmerkingen heb ik het antwoord bijgewerkt:

Dus je wilt de @USERNAME . krijgen gebaseerd op de U_datetime >= @As_ONDATE staat.

Gebruik dus je bestaande code en voeg nog een blok toe in de CURSOR om de @USERNAME te krijgen waarde zoals na de 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


  1. Vreemd resultaat met UNION en ORDER BY

  2. Upgraden naar PostgreSQL13

  3. Bereken overuren per dag

  4. StringWriter gebruiken voor XML-serialisatie