Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tidak dapat memasukkan nilai NULL ke kolom 'USERNAME', tabel 'tempdb.dbo.#temptable error

Pertama, komentari deklarasi @USERNAME di BEGIN initial awal blokir

 -- DECLARE @USERNAME varchar(110)

lalu tangani NULL nilai untuk USERNAME seperti pada SELECT * INTO blokir

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

Kemudian tambahkan @USERNAME di KURSOR sebagai

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

Kemudian @USERNAME tidak akan membuang NULL kesalahan

PERBARUI :Berdasarkan komentar Anda, saya memperbarui jawabannya:

Jadi Anda ingin mendapatkan @USERNAME berdasarkan U_datetime >= @As_ONDATE kondisi.

Jadi gunakan kode yang ada dan tambahkan satu blok lagi di dalam CURSOR untuk mendapatkan @USERNAME nilai seperti setelah 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kinerja SQL Server TOP CPU Query -2

  2. Batasan SQL DEFAULT untuk Menyisipkan Kolom dengan Nilai Default ke Tabel SQL Server

  3. Cara menghapus duplikat dari string di SQL

  4. Linq memilih rentang catatan

  5. Pilih kolom dari satu tabel berdasarkan nama kolom dari tabel lain