Db2

Db2

Connect with Db2, open source, and other data experts to gain value from your data, share insights, and solve problems.

 View Only
  • 1.  DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.19.66

    Posted 13 hours ago
    Dear Team,
     
    We encountered the following error during the EOD 
     
    DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.19.66
     
    Upon analysis, we found that the ITEM column in the CMS_ITEM table is defined as a BLOB data type with a size limit of 1,048,576 bytes (approximately 1 MB).
     
    We request your assistance to:
     
    1. Confirm the current maximum length allowed for this BLOB data type in ITEM column in CMS_ITEM table.
    2. If the size is indeed limited to 1 MB, help us increase it to 1 GB or 2 GB as per requirement.
    3. Confirm whether a DB reorganization will be necessary after changing the BLOB column size. If required, we would appreciate your assistance in performing the reorganization as well.
     
    This change is critical to prevent the bank's EOD process from failing daily.
     
    Please advise on the next steps. If needed, we are fine to set up a call with the bank to discuss how we can address these issues.
     
    Thank you,
    Sarojini Rajasekaran


    ------------------------------
    TBS-TI Customer Support Finasta
    ------------------------------


  • 2.  RE: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.19.66

    Posted 5 hours ago
    Edited by Jan Nelken 5 hours ago

    I used SAMPLE database:

    C:\>db2 connect

       Database Connection Information

     Database server        = DB2/NT64 12.1.5.0
     SQL authorization ID   = DB2ADMIN
     Local database alias   = SAMPLE

    C:\>db2 describe table emp_photo

                                    Data type                     Column
    Column name                     schema    Data type name      Length     Scale Nulls
    ------------------------------- --------- ------------------- ---------- ----- ------
    EMPNO                           SYSIBM    CHARACTER                    6     0 No
    PHOTO_FORMAT                    SYSIBM    VARCHAR                     10     0 No
    PICTURE                         SYSIBM    BLOB                    102400     0 Yes

      3 record(s) selected.


    C:\>db2 alter table emp_photo alter column picture set data type blob(2g)
    DB20000I  The SQL command completed successfully.

    Observe that actual length of BLOB column did not change, only the maximum length:

    C:\>db2 describe table emp_photo

                                    Data type                     Column
    Column name                     schema    Data type name      Length     Scale Nulls
    ------------------------------- --------- ------------------- ---------- ----- ------
    EMPNO                           SYSIBM    CHARACTER                    6     0 No
    PHOTO_FORMAT                    SYSIBM    VARCHAR                     10     0 No
    PICTURE                         SYSIBM    BLOB                2147483647     0 Yes

      3 record(s) selected.



    C:\>db2 select length(picture) from emp_photo

    1
    -----------
          43690
          29540
          71798
          29143
          73438
          39795
          63542
          36088

      8 record(s) selected.






    ------------------------------
    Jan Nelken
    Db2 (LUW) DBA
    Open for work
    Katowice or Krakow
    +48 783 109 863
    ------------------------------



  • 3.  RE: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.19.66

    Posted 5 hours ago

    SQL0302N is about wrong variable data type / length use in the application logic.

    https://www.ibm.com/docs/en/db2/12.1.x?topic=messages-sql0000-0999

    One of the following occurred:

       

        The corresponding host variable or parameter marker used in the SQL statement is defined as string, but the input host variable contains a string that is too long.
        The corresponding host variable or parameter marker used in the SQL statement is defined as numeric, but the input host variable contains a numeric value that is out of range.
        The terminating NUL character is missing from the C language NUL-terminated character string host variable.

    Consider the following example, when you declare a parameter maker of BLOB(10) data type (10 bytes) and try to set it to a value of larger length (11 bytes):

    BEGIN
      DECLARE l_len INT;
      PREPARE S1 FROM 'SET ? = ( SELECT LENGTH(B) FROM (VALUES ?::BLOB(10)) T(B) )';
      -- repeat(bx'01', 10) use doesn't lead to SQLCODE=-302
      EXECUTE S1 INTO l_len USING repeat(bx'01', 11);  -- <-- You get SQLCODE=-302 here
    END

    It's hard to explain how some blob table column length increase could help to avoid such an error unless it's some unknown application specific, which nobody here is probable aware of...



    ------------------------------
    Mark Barinstein
    ------------------------------



  • 4.  RE: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.19.66

    Posted 5 hours ago

    Just to be more specific for SQLCODE=-302

    C:\>db2 ? sql00302


    SQL0302N  The value of a host variable in the EXECUTE or OPEN statement
          is out of range for its corresponding use.

    Explanation:

    The value of an input host variable was found to be out of range for its
    use in the SELECT, VALUES, or prepared statement.

    One of the following occurred:

    *  The corresponding host variable or parameter marker used in the SQL
       statement is defined as string, but the input host variable contains
       a string that is too long.

    *  The corresponding host variable or parameter marker used in the SQL
       statement is defined as numeric, but the input host variable contains
       a numeric value that is out of range.

    *  The terminating NUL character is missing from the C language
       NUL-terminated character string host variable.

    *  Federated system users: in a pass-through session, a data
       source-specific restriction might have been violated.

    This error occurs as a result of specifying either an incorrect host
    variable or an incorrect SQLLEN value in an SQLDA on an EXECUTE or OPEN
    statement.

    The statement cannot be processed.

    User response:

    Ensure that the input host variable value is the correct type and
    length.

    If the input host variables supply values to parameter markers, match
    values with the implied data type and length of the parameter marker.

    Federated system users: for a pass-through session, determine what data
    source is causing the error.

    Examine the SQL dialect for that data source to determine which specific
    restriction has been violated, and adjust the failing statement as
    needed.

    sqlcode: -302

    sqlstate: 22001, 22003


       Related information:
       Troubleshooting data source connection errors



    ------------------------------
    Jan Nelken
    Db2 (LUW) DBA
    Open for work
    Katowice or Krakow
    +48 783 109 863
    ------------------------------