sql >> データベース >  >> RDS >> Sqlserver

列 'USERNAME'、テーブル 'tempdb.dbo.#temptable エラーに NULL 値を挿入できません

    まず、最初の BEGIN で @USERNAME 宣言をコメントします。 ブロック

     -- DECLARE @USERNAME varchar(110)
    

    次に NULL を処理します USERNAME の値 SELECT * INTO のように ブロック

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

    次に、@USERNAME を追加します としてカーソルで

    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
    

    次に @USERNAME NULL をスローしません エラー

    更新 :コメントに基づいて、回答を更新しました:

    @USERNAME を取得したいので、 U_datetime >= @As_ONDATE に基づく

    したがって、既存のコードを使用し、CURSOR 内にもう 1 つのブロックを追加して、@USERNAME を取得します。 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. 単純な集約からスライディング集約へのSQLでのデータ集約の技術

    2. MySqlBulkLoaderをトランザクションで使用できますか?

    3. FirefoxでMySQLSQLステートメントを実行できますか?

    4. INSERT INTOでの#1064エラー