sql >> Database teknologi >  >> RDS >> Sqlserver

Kan ikke indsætte NULL-værdier i kolonne 'BRUGERNAVN', tabel 'tempdb.dbo.#temptable error'

Kommenter først @USERNAME-erklæringen i den indledende BEGIN blokere

 -- DECLARE @USERNAME varchar(110)

håndter derefter NULL værdi for USERNAME som i SELECT * INTO blokere

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

Tilføj derefter @USERNAME i CURSOR 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

Derefter @USERNAME vil ikke kaste NULL fejl

OPDATERING :Baseret på dine kommentarer har jeg opdateret svaret:

Så du vil have @USERNAME baseret på U_datetime >= @As_ONDATE tilstand.

Så brug din eksisterende kode og tilføj en blok mere inde i CURSOREN for at få @USERNAME værdi 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. MySQL versus SQL Server Express

  2. SSIS Transform - Opdel en kolonne i flere kolonner

  3. Sådan kører du SQL i shell-script

  4. MYSQL - Opdel data i flere rækker