sql >> Databáze >  >> RDS >> Sqlserver

Nelze vložit hodnoty NULL do sloupce 'USERNAME', tabulky 'tempdb.dbo.#temptable error

Nejprve okomentujte deklaraci @USERNAME v úvodní části BEGIN blok

 -- DECLARE @USERNAME varchar(110)

pak zpracujte NULL hodnotu pro USERNAME jako v SELECT * INTO blok

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

Poté přidejte @USERNAME v CURSOR jako

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

Potom @USERNAME nevyhodí NULL chyba

AKTUALIZACE :Na základě vašich komentářů jsem aktualizoval odpověď:

Takže chcete získat @USERNAME na základě U_datetime >= @As_ONDATE podmínka.

Použijte tedy svůj stávající kód a přidejte do CURSORu jeden další blok pro získání @USERNAME hodnotu jako po 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. Převeďte varchar na datetime v SQL Server

  2. Načtení PDO nic nevrací

  3. Jak získat počet dní v měsíci v MySQL

  4. Najít bod v polygonu PHP