Hello there.
Can anyone explain me why i'm getting ORA-03113 when trying to execute the following code from the trigger in application written on Oracle Forms ? In the other hand, this code executes from the SQL+ correctly without any errors. I'm using Oracle Forms version 6.0.

b a.tt;

create package a as
type tr is record (a number, b number, c varchar(10));
type tt is table of tr index by binary_integer;
procedure proc1 (a in out tt);
end a;
create package body a as
procedure proc1 (a in out tt) is
cursor c1 is
  select * from t1;
  i binary_integer:=1;
  open c1;
    fetch c1 into a(i);
    exit when c1%notfound;
end loop;
close c1;
end proc1;
end a;
Who is Participating?
Everything you create with CREATE, CREATE OR REPLACE are Oracle Database Objects and they are stored in the database. Look what you can read in the Oracle documentation (I copied it directly from there):

Oracle8i Concepts
Release 2 (8.1.6)


Schemas and Schema Objects
A schema is a collection of database objects that are available to a user. Schema objects are the logical structures that directly refer to the database's data. Schema objects include such structures as tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links. (There is no relationship between a tablespace and a schema; objects in the same schema can be in different tablespaces, and a tablespace can hold objects from different schemas.)

Materialized Views
Program Units
Program unit is used in this manual to refer to stored procedures, functions, packages, triggers, and anonymous blocks.
Clusters and Hash Clusters
Database Links


An ORA-3113 "end of file on communication channel" error is a general error usually reported by a client process connected to an Oracle database. The error basically means 'I cannot communicate with the Oracle shadow process'. As it is such a general error more information must be collected to help determine what has happened - this error by itself does not indicate the cause of the problem. For example, ORA-3113 could be signalled for any of these scenarios:

Server machine crashed, Your server process was killed at O/S level, Network problems, Oracle internal errors / aborts on the server Client incorrectly handling multiple connections  etc.. etc.. etc.. - a lot of possible causes !!

what error messages Precede the ORA-3113 ...

You are trying to issue DDL command in Forms. The best way to do this is to create a stored procedure and to call this procedure from the Oracle server sidee.

But if you would like to do this on the client site use FORMS_DDL buil-in.

DDL (Data Dictionary Language) commands, such as CREATE TABLE and DROP SEQUENCE, can be issued by calling the FORMS_DDL built-in procedure. Be aware that FORMS_DDL built-in always issues an implicit COMMIT_FORM after executing the desired statement. Consequently, FORMS_DDL built-in should be called only when the application does not have unsaved changes pending that the operator might want to subsequently undo.


** Built-in:  FORMS_DDL
** Example:   The expression can be a string literal.
  Forms_DDL('create table temp(n NUMBER)');
  IF NOT Form_Success THEN
    Message ('Table Creation Failed');
    Message ('Table Created');
Cloud Class® Course: Certified Penetration Testing

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

lukinovAuthor Commented:
Sorry, forgot to mention that in case of using plane table type (not table of record) all is going ok. No more error message then ORA-3113 tho :(.
2shwertner: Where did you see DDL (Data DEFINITION Language) at my proc code ? I'm sure there is not. Again: it's stored procedure. Exactly it is. And sure it's executing at the server side, but calling from the form's trigger (client side). Thank you all anyhow. Any other idea ?
P.S. If you see syntax errors at my code (as well as any mistakes in my poor english :), don't worry about it, it might be typo. Unfortunately i don't have access to oracle console so cannot check correctness of my code.
Creating of packages is creating of data base objects. The package becomes part of the database. Not only tables and views are parts of the database. You said "stored procedure". Where you store it? In the database of course. So I am sure your statement can be clasified as DDL. Forms has troubles executing DDL's.

Ne budte tak samouwernim. Popitaites razobratsa w moih predlojeniah - tak wam budet lucshe!
lukinovAuthor Commented:
Look at proc1 code. It's not so difficult to see that there is not DDL statements. Again - i'm calling that procedure from form's trigger. I'm not trying to execute that 'create package' stuff. I'm just calling proc1. Look at the top of my first message. That is what i'm trying to do from the trigger. Package "a" is already there, as well as procedure "proc1" is.

Ya razobralsya v Vashih predlojeniyah. No ne vigu v kode proceduri nikakogo DDL. Krome cursora i operatorov upravleniya v kode "proc1" nichego net.
Please update and finalize this old, open question. Please:

1) Award points ... if you need Moderator assistance to split points, comment here with details please or advise us in Community Support with a zero point question and this question link.
2) Ask us to delete it if it has no value to you or others
3) Ask for a refund so that we can move it to our PAQ at zero points if it did not help you but may help others.



** Mindphaser - Community Support Moderator **

P.S.  Click your Member Profile, choose View Question History to go through all your open and locked questions to update them.
Force accepted

** Mindphaser - Community Support Moderator **
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.