Forum Stats

  • 3,781,149 Users
  • 2,254,484 Discussions
  • 7,879,596 Comments

Discussions

Error FRM-40733 appears when a new columns is added to a TYPE in procedure

Amir Khan
Amir Khan Member Posts: 68
edited Oct 7, 2008 3:20AM in Forms
Hi Everyone,

We're using oracle forms 10.1.2.02 and database 10g.

We have an oracle form with a "Data Block" having "Query Data Source" as "Procedure". The procedure is part of a database package.

In package specs we have defined a TYPE and a procedure e.g.

TYPE my_type IS RECORD (
a varchar2(30)
, b number
, c varchar2(240)
, d varchar2(1)
, e varchar2(1)
);

TYPE my_type_t IS TABLE OF my_type
INDEX BY BINARY_INTEGER;

PROCEDURE my_user_rec(p_table IN OUT my_type_t);

In package body some variables and the procedure is defined:

--global variables (whose values are set in some other procedures in the package body)
l_a varchar2(30);
l_b number
l_c varchar2(240)
l_d varchar2(1)
l_e varchar2(1)

PROCEDURE my_user_rec(p_table IN OUT my_type_t) IS
l_array_count PLS_INTEGER := 0;
BEGIN
//other logic such as loops, variable increments etc
...
...
...
l_array_count := l_array_count + 1;
p_table (l_array_count).a := l_a;
p_table (l_array_count).b := l_b;
p_table (l_array_count).c := l_c;
p_table (l_array_count).d := l_d;
p_table (l_array_count).e := l_e;
...
...
...
END;

Now we have a new requirement to add another column to this type and procedure. When I add this new column to the type, an error message starts appearing when execute_query to the data block is executed, "FRM-40733 PL/SQL built-in PLSQL_TABLE.POPULATE_BLOCK failed".

Following changes have been made:

1. I added a new column "NEW_COL" to the data block in form, with database column = Yes and column name = NEW_COL.

2. Added a new col to the type:
TYPE my_type IS RECORD (
a varchar2(30)
, b number
, c varchar2(240)
, d varchar2(1)
, e varchar2(1)
, new_col varchar2(1)
);

and added the following to my package and procedure
--global var
l_new_col varchar2(1);

--statement in procedure
p_table (l_array_count).new_col := l_new_col;

Please note the error appears when a new column is added to the TYPE. Even if I comment out the statment in procedure or delete the new column in my Data Block, the error still appears. But if I comment out the new_col statment in TYPE the error is not displayed but obviously without the new requirment fulfilled.

I think form is unable to create the mapping between this new_col and the data block column.

Can anyone please suggest what's happening and how to fix it?

Thanks,

Amir
Tagged:

Answers

  • Amir Khan
    Amir Khan Member Posts: 68
    The problem has been solved now.

    Instead of adding the data block column manually. Just click on the data block in object navigator. Open the data block wizard. Click Refresh button. The new column will appear. Move it on the right hand side of the selected columns. Next...Next...Next and Finish.

    Wizard does the trick for you.

    Thanks,

    Amir
This discussion has been closed.