Posted on 2001-06-04
Last Modified: 2011-05-05
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.


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;
Question by:lukinov
  • 3
  • 2
  • 2
  • +1

Expert Comment

ID: 6154885

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 ...

LVL 47

Expert Comment

ID: 6155353
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');

Author Comment

ID: 6157716
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.
LVL 47

Expert Comment

ID: 6159779
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!
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.


Author Comment

ID: 6184863
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.
LVL 47

Accepted Solution

schwertner earned 50 total points
ID: 6189823
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


Expert Comment

ID: 7035987
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.

Expert Comment

ID: 7043051
Force accepted

** Mindphaser - Community Support Moderator **

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Cursors in Oracle: A cursor is used to process individual rows returned by database system for a query. In oracle every SQL statement executed by the oracle server has a private area. This area contains information about the SQL statement and the…
Background In several of the companies I have worked for, I noticed that corporate reporting is off loaded from the production database and done mainly on a clone database which needs to be kept up to date daily by various means, be it a logical…
This video shows information on the Oracle Data Dictionary, starting with the Oracle documentation, explaining the different types of Data Dictionary views available by group and permissions as well as giving examples on how to retrieve data from th…
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function

932 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now