Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Não é possível inserir valores NULL na coluna 'USERNAME', tabela 'tempdb.dbo.#temptable error


Primeiro comente a declaração @USERNAME no BEGIN inicial quadra
 -- DECLARE @USERNAME varchar(110)

então manipule o NULL valor para o USERNAME como no SELECT * INTO quadra
 ISNULL(b.first_Name, '') + ' ' + ISNULL(b.last_name, '') AS USERNAME

Em seguida, adicione o @USERNAME no CURSOR como
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

Em seguida, o @USERNAME não lançará o NULL erro

ATUALIZAÇÃO :Com base em seus comentários, atualizei a resposta:

Então você quer obter o @USERNAME baseado no U_datetime >= @As_ONDATE doença.

Então use seu código existente e adicione mais um bloco dentro do CURSOR para obter o @USERNAME valor como após o 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