0
               DECLARE
               X           NUMBER := 960004;
               user_name   VARCHAR2 (30);
            BEGIN
               SELECT USER INTO user_name FROM DUAL;

               EXECUTE IMMEDIATE 'alter session set current_schema = EC_ADMIN';

               BEGIN
                  SYS.DBMS_JOB.iSUBMIT (
                     job         => X,
                     what        => 'DECLARE
               p_error_text                VARCHAR2 (4000);
               p_exec_status               VARCHAR2 (50);
               l_error_source_s   CONSTANT VARCHAR2 (30) := ''JOB# 960004'';
               l_sql_point_n               NUMBER;
               l_err_text_s                VARCHAR2 (4000);


---cursor to fetch the inventory_item_id, organization_id----

               CURSOR c_system_item
               IS
            SELECT inventory_item_id, organization_id
              FROM xx_mtl_system_items_b
            WHERE tc_processed_status = ''N''
            UNION
            SELECT xmic.inventory_item_id, xmic.organization_id
              FROM xx_mtl_item_categories xmic
            WHERE     EXISTS
                          (SELECT 1
                             FROM xx_mtl_system_items_b xmsib
                            WHERE     xmsib.organization_id = xmic.organization_id
                                  AND xmsib.inventory_item_id = xmic.inventory_item_id)
                   AND tc_processed_status = ''N''
            UNION
            SELECT xemsieb.inventory_item_id, 1 AS organization_id
              FROM xx_ego_mtl_sy_items_ext_b xemsieb
            WHERE     EXISTS
                          (SELECT 1
                             FROM xx_mtl_system_items_b xmsib
                            WHERE xmsib.inventory_item_id = xemsieb.inventory_item_id)
                   AND tc_processed_status = ''N''
                   AND attr_group_id = 591;

------------------cursor ends-----------


            BEGIN
               FOR system_item_rec IN c_system_item
               LOOP
                  BEGIN
                     l_sql_point_n := 10;
                     xx_mtl_system_items_b_proc (system_item_rec.inventory_item_id,
                                                 system_item_rec.organization_id,
                                                 p_error_text,
                                                 p_exec_status);
                     l_sql_point_n := 20;

                     IF p_exec_status = ''SUCCESS''
                     THEN
                        l_sql_point_n := 30;

                        UPDATE xx_mtl_system_items_b
                           SET tc_processed_status = ''Y'', tc_processed_date = SYSDATE
                         WHERE inventory_item_id = system_item_rec.inventory_item_id
                               AND organization_id = system_item_rec.organization_id;

                        l_sql_point_n := 40;

                        UPDATE xx_mtl_item_categories
                           SET tc_processed_status = ''Y'', tc_processed_date = SYSDATE
                         WHERE inventory_item_id = system_item_rec.inventory_item_id
                               AND organization_id = system_item_rec.organization_id;

                        l_sql_point_n := 41;

                        UPDATE XX_EGO_MTL_SY_ITEMS_EXT_B
                           SET tc_processed_status = ''Y'', tc_processed_date = SYSDATE
                         WHERE inventory_item_id = system_item_rec.inventory_item_id
                               AND attr_group_id = 591;




                     ELSIF p_exec_status = ''FAILURE''
                     THEN
                        l_sql_point_n := 50;

                        UPDATE xx_mtl_system_items_b
                           SET tc_processed_status = ''E'', tc_processed_date = SYSDATE
                         WHERE inventory_item_id = system_item_rec.inventory_item_id
                               AND organization_id = system_item_rec.organization_id;

                        l_sql_point_n := 60;

                        UPDATE xx_mtl_item_categories
                           SET tc_processed_status = ''E'', tc_processed_date = SYSDATE
                         WHERE inventory_item_id = system_item_rec.inventory_item_id
                               AND organization_id = system_item_rec.organization_id;

                        l_sql_point_n := 61;                   

                        UPDATE XX_EGO_MTL_SY_ITEMS_EXT_B
                           SET tc_processed_status = ''E'', tc_processed_date = SYSDATE
                         WHERE inventory_item_id = system_item_rec.inventory_item_id
                               AND attr_group_id = 591;                   

                     END IF;

                     l_sql_point_n := 70;
                     COMMIT;
                  EXCEPTION
                     WHEN OTHERS
                     THEN
                        ROLLBACK;
                        l_err_text_s :=
                              ''Error Ocured In : ''
                           || l_error_source_s
                           || '' At SQL Point : ''
                           || l_sql_point_n
                           || '' ERROR : ''
                           || SUBSTR (SQLERRM (SQLCODE), 1, 250);

                        xx_log_dbms_error (''E'',
                                           ''Inventory_Item_Id'',
                                           system_item_rec.inventory_item_id,
                                           NULL,
                                           l_err_text_s,
                                           USER,
                                           l_error_source_s);
                  END;
               END LOOP;
            END;',
                     next_date   => SYSDATE,
                     interval    => 'SYSDATE + 45/1440',
                     no_parse    => FALSE);
                  SYS.DBMS_OUTPUT.PUT_LINE ('Job Number is: ' || TO_CHAR (x));

                  EXECUTE IMMEDIATE 'alter session set current_schema = ' || user_name;
               EXCEPTION
                  WHEN OTHERS
                  THEN
                     EXECUTE IMMEDIATE 'alter session set current_schema = ' || user_name;

                     RAISE;
               END;

               COMMIT;
            END;
            /

Gives the Error
[Error] Execution (26: 1): ORA-01461: can bind a LONG value only for insert into a LONG column ORA-06512: at line 142

inventory_item_id, organization_id both are of datatype number in xx_mtl_system_items_b & xx_mtl_item_categories

inventory_item_id is of datatype number in xx_ego_mtl_sy_items_ext_b and organization_id is not present in xx_ego_mtl_sy_items_ext_b

bushra
  • 1
  • 1
  • Although oracle corp does own mysql ab, it does not mean that you should tag oracle product related questions as mysql! – Shadow Jan 29 '16 at 10:01
  • Got it, can someone help me with this ? – bushra Jan 29 '16 at 10:09
  • Possible duplicate of [ORA-01461: can bind a LONG value only for insert into a LONG column-Occurs when querying](http://stackoverflow.com/questions/9156019/ora-01461-can-bind-a-long-value-only-for-insert-into-a-long-column-occurs-when) – Chrisrs2292 Jan 29 '16 at 10:25
  • there is a select query in the cursor, when i run this same code just removing the job code, it works fine.. only inside the job this error is thrown – bushra Jan 29 '16 at 10:44
  • Is it necessary to manually allocate `job_no` to the `DBMS_JOB` ? Just declare `X` as `X NUMBER;` and remove the assignment value and try. – Sameer Mirji Jan 29 '16 at 11:06
  • tried that, still din work – bushra Jan 29 '16 at 11:15
  • Guys, error was due to the large amount of spaces in the variable i was giving in the job.. thanks anyways :) – bushra Jan 31 '16 at 06:22

1 Answers1

0

You are submitting a 6300-character string to DBMS_JOB.SUBMIT. Depending on the Oracle version, that can be too long. Oracle sometimes sees a long string like that and does an automatic conversion to LONG, which is an abhominable beast of a data type. The usual limit for a varchar2 is 4000. I think that's what killed you.

Andrew Wolfe
  • 2,020
  • 19
  • 25