Re: Help Calling Stored Procedure from Forms30
From: Steven P. Muench <smuench_at_oracle.com>
Date: Mon, 10 Jan 1994 22:19:42 GMT
Message-ID: <SMUENCH.94Jan10141942_at_doh.oracle.com>
Date: Mon, 10 Jan 1994 22:19:42 GMT
Message-ID: <SMUENCH.94Jan10141942_at_doh.oracle.com>
DAVE -- Because of the client/server cooperation that occurs at
compile time to resolve references to stored procedures -- where in essence the client, Forms 3.0 or 4.0, asks the server if the current user has access to a stored procedure by some name that it can't find locally in the form -- any problems with the setup of the server can cause the form to fail to look up these stored procedures. Run the following SQL script from SQLPLUS while connected as the "SYS" user: REM REM Display Statuses of Key REM Database Objects REM COLUMN OBJECT_NAME FORMAT A30 COLUMN OBJECT_TYPE FORMAT A12 SELECT OBJECT_NAME,OBJECT_TYPE,STATUS FROM ALL_OBJECTS WHERE OBJECT_NAME IN ('PSTUBT','PSTUBTBL','PIDL', 'DIUTIL','DIANA','STANDARD', 'DBMS_STANDARD') ORDER BY 1,2; OBJECT_NAME OBJECT_TYPE STATUS ------------------------------ ------------ ------- DBMS_STANDARD PACKAGE VALID DBMS_STANDARD PACKAGE BODY VALID DBMS_STANDARD SYNONYM VALID DIANA PACKAGE VALID DIANA PACKAGE BODY VALID DIUTIL PACKAGE VALID DIUTIL PACKAGE BODY VALID PIDL PACKAGE VALID PIDL PACKAGE BODY VALID PSTUBT PROCEDURE VALID PSTUBTBL TABLE VALID STANDARD PACKAGE VALID STANDARD PACKAGE BODY VALID If any of these objects is missing or invalid on your system, then as SYS, rerun the script DIUTIL.SQL which should be among all of the server setup SQL scripts (?/rdbms/admin on Unix, or \ORAWIN\DBS\ on Windows). Other reasons you might be having problems referring to a stored procedure from Forms are:
(*) The stored procedure or function has arguments of
datatype other than the four types which are documented as supported: VARCHAR2, NUMBER, DATE, BOOLEAN
(*) You're calling a procedure or function in a package
which *contains* a procedure or function (maybe not the one you're calling) that uses a datatype for its arguments that is not one of the four listed above.
(*) You're calling a stored procedure or functions whose
arguments (albeit of one of the four supported types) are declared as being of type TABLE.COLUMN%TYPE. This syntax will be supported in a future maintenance release, but is a reason what you are running now might be giving problems. The above might be the problem if you can successfully reference *some* but not all of the stored procedures you're trying to use from Forms. Another less common problem, however worth mentioning is:
(*) You've fragmented (or Oracle has fragmented) your SGA
such that there doesn't exist a contiguous free chunk of at least 32K -- which is required to perform some of the client/server lookup... Or the lookup mechanism may have been aged out of the shared pool after a period of non-use and didn't have enough contiguous memory to go back into after being "woken up" later. The 7.0.15 release of Oracle7 includes a package called DBMS_SHARED_POOL which has a procedure called KEEP that allows you to pin important program units in memory so that they stay in the SGA instead of being candidates for LRU aging. It can help to pin the 'DIUTIL' package in memory using the syntax: SQL> execute dbms_shared_pool.keep('diutil'); If this is not done immediately following a startup, you can clean up the shared pool area before issuing the above command by logging on as SYS and performing the command: SQL> alter system flush shared pool; Hopefully, some of this will help you narrow down what might be the problem.
-- Steve Muench Email: smuench_at_oracle.com Forms Development CIS: 73404,676 Product Manager Oracle CorporationReceived on Mon Jan 10 1994 - 23:19:42 CET