PLS-00323 forward declaration in PLSQL Version 10.
Hello.
I have a package which contains forward references which compiles on a 9i database.
However, when I try to compile an exact copy of the procedure on a 10g database it returns an error
"PLS-00323: subprogram or cursor 'P_PA_ACTION_START' is declared in a package specification and must be defined in the package body"
I was wondering if there were any differences in the rules concerning forward references in pl/sql 10.
Thanks in advance.
Glyn Williams.
Hello.
I have a package which contains forward references which compiles on a 9i database.
However, when I try to compile an exact copy of the procedure on a 10g database it returns an error
"PLS-00323: subprogram or cursor 'P_PA_ACTION_START' is declared in a package specification and must be defined in the package body"
I was wondering if there were any differences in the rules concerning forward references in pl/sql 10.
Thanks in advance.
Glyn Williams.
Similar Messages
-
I have the PLS-00323 but ..I am getting it
Ok here is the declaration in the the package header..
FUNCTION fn_populate_rgns_from_national(fv_sales_force_no IN
tsales_force.sales_force_no%TYPE
,fv_budget_no IN tbudget_plan.budget_no%TYPE) RETURN VARCHAR2;
....now here is the package body ...
Function fn_populate_rgns_from_national(fv_sales_force_no IN
tslaes_force.sales_force%TYPE ,
fv_budget_no IN tbudget_plan.budget_no%type) RETURN VARCHAR2 IS
BEgin
< yada > <yada>
ENd ;
As far as I can tell...the declaration is the same in the
package header and body...then why the heck, I am getting the
PLS-0323 error :
LINE/COL ERROR
5/10 PLS-00323: subprogram or
cursor 'FN_POPULATE_RGNS_FROM_NATIONAL'
is declared in a package specification and must be
defined in the
package body
I am at my wits end..its typing mistake...
package specification
fv_sales_force_no IN tsales_force.sales_force_no%TYPE
package body :
fv_sales_force_no IN tslaes_force.sales_force%TYPE ,
_no is missing in package body.. make changes to either
package body or specification and run it. its not oracle bug,
human mistake. -
PLS-00323: subprogram or cursor... really wierd
I'm not sure where I'm causing this error, here is the pkg spec & body... but if i remove v_end_date from spec & body, then this pkg compiles fine...
Here is the error message:
PLS-00323: subprogram or cursor 'my_fn' is
declared in a package specification and must be defined in the
package body
Package Spec
CREATE OR REPLACE PACKAGE Pkg_Rep IS
FUNCTION my_fn ( v_app_id IN NUMBER, v_report_no IN NUMBER, v_prop_id IN NUMBER, v_start_dt IN DATE, v_end_dt IN DATE) RETURN number;
END Pkg_Rep;
Package Body
CREATE OR REPLACE PACKAGE BODY Pkg_Rep AS
FUNCTION my_fn ( v_app_id IN NUMBER, v_report_no IN NUMBER, v_prop_id IN NUMBER, v_start_dt IN DATE, v_end_date IN DATE)
RETURN number IS
BEGIN
END my_fn;
END Pkg_Rep;
/The signature of the function must be identical, including the name of the parameters.
-
PLS-00320: the declaration of the type of this expression is incomplete or malformed
hello my friend please help
I have this Error in PL /SQL procedure
ORA-06550: line 6, column 12:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 6, column 12:
PL/SQL: Item ignored
where this is my procedure
CREATE OR REPLACE PROCEDURE MOAMALAT."IO_EMP_REP"
P_FROMDATE IN NUMBER,
P_TODATE IN NUMBER,
P_EMPID IN NUMBER,
RCT1 OUT GLOBALPKG.RCT1
AS
BEGIN
OPEN RCT1 FOR
SELECT COUNT (I.CORRESPONDENCENUMBER) cont,
EMP.FULLNAME empname,
D.DEPARTMENTNAME deptname
FROM MOAMALAT.IO_INCOMING i,
MOAMALAT.IO_EMPLOYEES emp,
MOAMALAT.IO_DEPARTMENTS d
WHERE I.RECEIVEDBY = (SELECT EM.USERID
FROM MOAMALAT.IO_EMPLOYEES em
WHERE EM.EMPLOYEEID = P_EMPID)
AND I.RECEIVEDBY LIKE EMP.USERID
--and EMP.DEPARTMENTID=1900
AND I.RECEIVEDBYDEPARTMENTID = D.DEPARTMENTID
AND I.CORRESPONDENCEDATE BETWEEN P_FROMDATE AND P_TODATE
GROUP BY EMP.FULLNAME, D.DEPARTMENTNAME
UNION ALL
SELECT COUNT (o.CORRESPONDENCENUMBER) cont,
EMP.FULLNAME empname,
D.DEPARTMENTNAME deptname
FROM MOAMALAT.IO_OUTGOING o,
MOAMALAT.IO_EMPLOYEES emp,
MOAMALAT.IO_DEPARTMENTS d
WHERE O.SENTBY = (SELECT EM.USERID
FROM MOAMALAT.IO_EMPLOYEES em
WHERE EM.EMPLOYEEID = P_EMPID)
AND EMP.USERID LIKE EMP.USERID
AND EMP.USERID LIKE O.SENTBY
AND O.SENTBYDEPARTMENTID = D.DEPARTMENTID
AND O.CORRESPONDENCEDATE BETWEEN P_FROMDATE AND P_TODATE
GROUP BY EMP.FULLNAME, D.DEPARTMENTNAME;
END;aymanhamdan01 wrote:
thanks for replay
sb92075
this line 6: RCT1 OUT GLOBALPKG.RCT1
does Oracle (& you) know what datatype GLOBALPKG.RCT1 is? -
Forward Declaration in Class Builder
Hi All,
In the Class Builder (SE24)when i create a new Class, There is an option of Forward declaration in the Property Tab. In this, we can add Type Group Interface and Class. What is the Purpose of this forward declaration?
The F1 help does not provide any help.
Regards,
Kapil.in addition to above replies, it can be used for classes and interfaces in that case Forward declaration is equivalent to
CLASS <class_name> DEFINITION LOAD.
interface <interface_name> load
statements which are normally used in Program ( case for local classes )
use of Load from SAP docu
... LOAD
Effect
The variant with the LOAD addition loads a global class class from the Class Library. This statement was needed before Release 6.20 if you wanted to access one of the static components of class from within a program, or to declare an event handler for class before class had been loaded automatically. From Release 6.20 onwards, the LOAD addition is only needed if the compilation of an ABAP program fails because it includes recursive accesses of a globa l class. In such cases, you may be able to make the program compilable by explicitly loading the class before recursion.
Thanks,
kranthi. -
Forward Declaration and "this" keyword
Consider this code:
class A {
private int i = 2 * this.j; // This will be calculated as 2 * 0 = 0
// private int i = 2 * j; //This code will not compile
private int j = 20;
}Why the "this" keyword is required for the j to be accessible? Though it is a forward declaration, what is the significance of "this" which gives visibility to the variable j. Please give some light to this.Though it is a forward declaration, what is the significance of "this" which gives
visibility to the variable jI don't think "this" alters the visibility of j: that is the instance variable j is in scope. However "Use of instance variables whose declarations appear textually after the use is sometimes restricted, even though these instance variables are in scope."
See "8.3.2.3 Restrictions on the use of Fields during Initialization" http://java.sun.com/docs/books/jls/third_edition/html/classes.html#287410
Using "this" you have a reference to the object being constructed with the j instance variable sill having its default value of zero.
Such instance initialisers would appear to be inherently less intelligible than using a constructor. -
Hi Experts,
Please let me know the use of forward declaration for a class. How to use that?
Thanks and Regards,
DebarshiHi,
Absolutely true matt...
you use forward declaration when you want to indicate that this component will be defined later but i am referring to this as of now.
so that it does not give any syntax/ run time error.
Rgds/Abhi -
Can anyone kindly explain me in detail about Package forward declaration and where this is used and what's the purpose of using it.A example would be good
Thanks in advanceA subprogram declaration called a
forward declaration. It consists of the subprogram
specification in the package body .
CREATE OR REPLACE PACKAGE BODY declare_forward
IS
PROCEDURE pro(. . .); -- forward declaration
PROCEDURE pro2(. . .)
IS -- subprograms defined
BEGIN -- in alphabetical order
pro(. . .);
END;
END declare_forward; -
hi,
i have a package
CREATE OR REPLACE PACKAGE BODY pkgemp AS
FUNCTION fNeedsCpeReview(
p_order_id IN VARCHAR2 DEFAULT NULL)
RETURN product_info_tbl
is
CURSOR csr_ord_control IS
SELECT action_cd
FROM ord_control
WHERE order_id = l_order_id;
begin
select * from abc where enum=1234;
execute immediate create table abc(
enum number);
END pkgemp;
-- please forget abt the function and cursor.
-- the table 'abc' is not present in the DB
-- so we cannot execute select statement and compilation error even though we are creatign that table after 'select' statement
-- we need to do forward declarartion.
my question is how do we do a forward declaration for creating a table ?Hi,
Creating tables in procedures is rarely necessary in Oracle.
Describe what you're trying to do, and someone will suggest a good way to do it. Many people have used global temporary tables where they thought creating a table on the fly was necessary.
If you really do have to use table (abc) that may not exist at compile time, or if abc may be dropped and recreated after the procedure is compiled, then do everything that involves abc using dynamic SQL.
Remember that EXECUTE IMMEDIATE works on strings, so
execute immediate create table abc(
enum number);is incorrect, but
execute immediate 'create table abc(
enum number)';will work. -
No logical forward declared in action {0} in Web Channel
Hello
We are getting this error (No logical forward declared in action ) in CRM Web Channel when we are trying to retrieve a service order.
Any Ideas????Hello,
I would guess that this maybe due to come config in your struts-config.xml
I would check the f tansaction type that is been used and the transaction category
The only transaction category working with ICSS are:
- BUS2000116
- BUS2000120
- BUS2000112
Regards
Mark -
hi all,
can anyone explain me abt forward declarations in PLSQLForward Declaration:
A forward declaration consists of a subprogram spec terminated by a semicolon.
SQL> declare
2 procedure proc1(p1 varchar2);--Forward
3 procedure proc2 is
4 begin
5 proc1('Hai');--Used here without defining
6 end;
7 procedure proc1(p1 varchar2) is[b]--defined here
8 begin
9 dbms_output.put_line(p1);
10 end;
11 begin
12 proc2;
13 end;
14 /
Hai
PL/SQL procedure successfully completed. -
Receiving the warning of class forward declaration
I am trying to build the Clustering Plug in project on my Leopard. I have following 2 queries -
In that project an interface class is defined as
@interface ClusteringController : NSWindowController { ....... ..... .... } @end.
And this class is used in implementation class using forward declaration as follows
@class ClusteringController;
then in one fuction it is used as follows
(long) filterImage:(NSString*) menuName {
ClusteringController *cluster = [[ClusteringController alloc] init]; [cluster showWindow:self]; return 0; }
When i try to build this project it showing a warning as follows
warning: receiver 'ClusteringController' is a forward class and corresponding @interface may not exist
Also there is 1 more warning is coming
warning: no '-updateProxyWhenReconnect' method found
This warning is coming for the following line of code
if(delegate) [delegate updateProxyWhenReconnect];
Can anybody help me to overcome these warnings?shaktirsg wrote:
And this class is used in implementation class using forward declaration as follows
@class ClusteringController;
An implementation requires an #import of the entire interface file for any class used in the code. As a rule:
Use @class when a class is used in an @interface
Use #import when a class is used in an @implementation
if(delegate) \[delegate updateProxyWhenReconnect\];
warning: no '- updateProxyWhenReconnect' method found
It looks like the compiler doesn't know the class of 'delegate'. Can we see the code that sets the 'delegate' variable? Also please let us know where updateProxyWhenReconnect is declared. Is it declared in the interface for the class to which 'delegate' belongs? If so, it might be good for us to also see that @interface file.
\- Ray -
hi
I am trying to compile this code but its not comipiling here is the code
<pre>
declare
type null_record is record(
fname varchar2(10) default 'PLSQL',
lname varchar2(10) default 'Oracle');
procedure by_refrence(in_r in null_record, out_r out nocopy null_record) is
begin
out_r := in_r;
end by_refrence;
r_var1 null_record;
r_var2 null_record;
begin
r_var2.fname := 'SQL';
dbms_output.put_line('before assigning' || r_var2.fname);
by_refrence(r_var2, r_var1);
-- both the attributes of the records turns null
dbms_output.put_line('after assigning ' || r_var1.fname);
end
</pre>;Not compiling? I'm not surprised: Where did you find this structure?
If you want an anonymous block then get the procedure declaration out of there.
If you want a stored procedure drop the word DECLARE and put your variables into the correct place before the BEGIN.
Look a the demos here:
http://www.psoug.org/reference/procedures.html
Likely your types should either be stand-alone types or declared in a package header. -
How pass a parameter with forward slash to plsql script
Hi,
I am trying pass a parameter to plsql script from command line using sqlplus, and the parameter is a file directory and has '/'. Seems the system couldn't recognize the value.
here is my code in DECLARE:
l_FileDir VARCHAR2(200) := &&FileDir ;
I pass value '/usr/tmp' (with the single quote in the string)
Can someone tell me how I do it?
Thanks,
Kate
Edited by: user12100435 on Feb 25, 2010 8:31 AMuser12100435 wrote:
I think you are right. The issue is not file-separator character issue. because the exact same script run in another envoironment. And it's not file directory or permission issue because if I use hardcoded value, the code works fine.
The error message is invalid File directory.
Here is the related part of the code.
-- open file handler
IF UTL_FILE.IS_OPEN(l_FileHandler) THEN
UTL_FILE.FCLOSE(l_FileHandler);
ELSE
l_FileHandler := UTL_FILE.FOPEN ( location => l_FileDir,
filename => l_FileName,
open_mode => 'W',
max_linesize => 32767 );
END IF;Ok, based on your input so far, I have cooked up a simple testcase.
Make sure you are doing something similar to this -
test@XE>
test@XE> -- show the contents of the anonymous PL/SQL script
test@XE> -- You are probably passing two parameters - the file location and the file name
test@XE> --
test@XE> ! cat test5.sql
DECLARE
l_FileHandler UTL_FILE.FILE_TYPE;
l_FileDir VARCHAR2(200) := '&1' ;
l_FileName VARCHAR2(200) := '&2' ;
BEGIN
-- open file handler
IF UTL_FILE.IS_OPEN(l_FileHandler) THEN
UTL_FILE.FCLOSE(l_FileHandler);
ELSE
l_FileHandler := UTL_FILE.FOPEN ( location => l_FileDir,
filename => l_FileName,
open_mode => 'W',
max_linesize => 32767 );
UTL_FILE.PUT_LINE(file => l_FileHandler, buffer => 'Hello, World!');
UTL_FILE.FCLOSE(file => l_FileHandler);
END IF;
END;
test@XE>
test@XE> -- execute it
test@XE> @test5.sql '/usr/tmp' 'first.txt'
old 3: l_FileDir VARCHAR2(200) := '&1' ;
new 3: l_FileDir VARCHAR2(200) := '/usr/tmp' ;
old 4: l_FileName VARCHAR2(200) := '&2' ;
new 4: l_FileName VARCHAR2(200) := 'first.txt' ;
DECLARE
ERROR at line 1:
ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 33
ORA-06512: at "SYS.UTL_FILE", line 436
ORA-06512: at line 10
test@XE>
test@XE> -- Create a directory object that points to "/usr/tmp"
test@XE> create directory log_dir as '/usr/tmp';
Directory created.
test@XE>
test@XE> -- now invoke the script
test@XE> -- Note - I pass the value "LOG_DIR" in uppercase. That's the name of my directory object.
test@XE> --
test@XE> @test5.sql 'LOG_DIR' 'first.txt'
old 3: l_FileDir VARCHAR2(200) := '&1' ;
new 3: l_FileDir VARCHAR2(200) := 'LOG_DIR' ;
old 4: l_FileName VARCHAR2(200) := '&2' ;
new 4: l_FileName VARCHAR2(200) := 'first.txt' ;
PL/SQL procedure successfully completed.
test@XE>
test@XE> -- Since my Oracle client is on the same machine as the Oracle server, I can check
test@XE> -- this file "/usr/tmp/first.txt" quite easily
test@XE>
test@XE> ! cat /usr/tmp/first.txt
Hello, World!
test@XE>
test@XE> isotope -
How to create Extra Freight Unit for LCL Forwarding Order in Web Version of SAP?
Hi,
Can anyone please tell me how to create Extra Freight Unit in LCL Forwarding Order. Normally, each LCL Forwarding Order has one Freight Unit. But, if there are two types of Dangerous Goods and need to be transported via separate containers. Obviously, it should have separate Freight Unit to be created in the system. But, even adding package in Items Tab, unable to create Freight Unit for LCL order. Is there any other way to create Extra Freght Unit?Hi Aaron,
When the FWO saving, it would build the freight unit auotmatically.
The filed "Document Type" in FUBR is used to specify the FU type.
So the FWO build the FU base on the FUBR which maintain in the FWO type.
Useful link for FUBR :
http://help.sap.com/saphelp_tm80/helpdata/en/5a/6749c4614f46e2a12160c775ff19de/frameset.htm
Best Regards
Clark Huang
Maybe you are looking for
-
Update from IOS 10.6.8 to Yosemite/Mavericks
Hi, My computer is up for an upgrade from my OSX 10.6.8 and I seem to eligible for it, nevertheless I'm getting the message that this version cannot be installed. All the details are below, anyone have any suggestions on what I'm missing? System Vers
-
Read from one file ... and write
I had written below code to read from a file which has input in below format... $ filla % dillla I wrote a code to read from the below file and I want to write into another file... in another format...like filla, $ dilla, % I wrote as below... but my
-
PowerBook G4 Safari update?
My PowerBook G4 needs Safari updated, according to Gmail, Facebook and other sites. My G4 says all software is up to date. What Safari should I have? Additionally Facebook won't play videos. It says I need to update Flashplayer. I try to update it
-
Inbound idoc error in R/3while distributing GOA to R/3
Hi, We have faced below inbound idoc issue for service GOA while replicating GOA to R/3. When distributing contracts for external services the system issues message SE120 (Number range conflict (internal package no. & already assigned)). How can this
-
Itv stuck in sync mode, how to disengage w/o losing content?
itv stuck in sync mode, how to disengage w/o losing content?