sql >> Databasteknik >  >> RDS >> Sqlserver

Det går inte att infoga NULL-värden i kolumnen "USERNAME", tabellen "tempdb.dbo.#temptable error"

Kommentera först @USERNAME-deklarationen i den initiala BEGIN blockera

 -- DECLARE @USERNAME varchar(110)

hantera sedan NULL värde för USERNAME som i SELECT * INTO blockera

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

Lägg sedan till @USERNAME i MARKören som

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

Sedan @USERNAME kommer inte att kasta NULL fel

UPPDATERA :Baserat på dina kommentarer uppdaterade jag svaret:

Så du vill få @USERNAME baserat på U_datetime >= @As_ONDATE skick.

Så använd din befintliga kod och lägg till ytterligare ett block i MARKEREN för att få @USERNAME värde som efter 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. PostgreSQL-motsvarighet till MySQL-minnestabeller?

  2. java Viloläge onödiga frågor på fristående objekt

  3. returnera nummer från mitten av en sträng med oregelbundet format

  4. Försöker få tillgång till icke-objekt - CodeIgniter