Procedure or package
regarding execution matter which one is faster procedure or package and why
Anutosh, there is nothing like faster between the two as you cannot compare them.
you execute a procedure but you never execute a package. you always execute the functions and the procedures inside the package. so there is no question about comparison.
offcourse you get advantage with package like
--overloaded procedure and functions.
--if you invoke any procedure/function within the package the entire package is loaded to the memory avoiding disk reads.
etc..
Similar Messages
-
How to copy procedures and packages from one server to another?
Hi,
I have 439 packages and 178 procedures located in one server called MAXWELL.
I need to copy these objects to another server called TITAN.
The schema names is SPCBR in both servers.
So both servers have an instance running with this schema SPCBR.
SPCBR in TITAN server has their tables with table data which was generated by an export/import process from MAXWELL server.
However, procedures and packages were not copied by the export/import because I used the clause 'tables'.
Now, what can I do in order to equalize procedures and packages in both databases? I can't risk in damaging or duplicating data in my database located in TITAN server, ok?
Thanks,Another simple alternative, according to AskTom (http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:454220160386)
---------------- getcode.sql ----------------------------
set feedback off
set heading off
set termout off
set linesize 1000
set trimspool on
set verify off
spool &1..sql
prompt set define off
select decode( type||'-'||to_char(line,'fm99999'),
'PACKAGE BODY-1', '/'||chr(10),
null) ||
decode(line,1,'create or replace ', '' ) ||
text text
from user_source
where name = upper('&&1')
order by type, line;
prompt /
prompt set define on
spool off
set feedback on
set heading on
set termout on
set linesize 100
------------------- eof --------------------------------
it extracts one procedure, function or package to a file. Thats it. If you
wanted to get all of the procedures in a schema extracted to the current working
directory, you would run a script:
--------------- getallcode ---------------------------
set termout off
set heading off
set feedback off
set linesize 50
spool xtmpx.sql
select '@getcode ' || object_name
from user_objects
where object_type in ( 'PROCEDURE', 'FUNCTION', 'PACKAGE' )
spool off
spool getallcode_INSTALL.sql
select '@' || object_name
from user_objects
where object_type in ( 'PROCEDURE', 'FUNCTION', 'PACKAGE' )
spool off
set heading on
set feedback on
set linesize 130
set termout on
@xtmpx.sql
---------------- eof ---------------------------------
You can see how to filter on that one by adding to the where clause if you want.
Just run @getallcode_INSTALL to run all of the scripts... -
Problem with procedure in package
Problem with procedure in package:
create table accounts
(acno number(10),
name varchar2(20),
balance number(10,2));
create package banking is
procedure new_acct(acno NUMBER, name IN VARCHAR);
procedure acct_dep(acno IN NUMBER, amount IN NUMBER);
procedure acc_wdr(acno IN NUMBER, amount IN NUMBER);
procedure acc_bal(acno IN NUMBER, bal OUT NUMBER);
function acc_drwn(acno IN NUMBER) RETURN BOOLEAN;
end banking;
create or replace package body banking is
procedure new_acct ( acno IN number,
name IN varchar) is
begin
insert into accounts
(acno, name, balance)
values
(acno, name,0);
end;
procedure acct_dep(acno IN NUMBER,
amount IN NUMBER) is
begin
update accounts
set balance = balance + amount
where acno = acno;
end;
procedure acc_wdr(acno IN NUMBER,
amount IN NUMBER) is
begin
update accounts
set balance = balance - amount
where acno = acno;
end;
procedure acc_bal(acno IN NUMBER,
bal OUT NUMBER) is
begin
declare cursor c_balance(i_acno IN accounts.acno%type) is
select balance
from accounts
where acno = i_acno;
acc_bal accounts.balance%type;
begin
if c_balance%isopen then
close c_balance;
end if;
open c_balance(acno);
fetch c_balance into acc_bal;
close c_balance;
end;
end;
function acc_drwn(acno IN NUMBER) RETURN BOOLEAN is
begin
declare cursor c_balance(i_acno IN accounts.acno%type) is
select balance
from accounts
where acno = i_acno;
bal accounts.balance%type;
begin
if c_balance%isopen then
close c_balance;
end if;
open c_balance(acno);
fetch c_balance into bal;
close c_balance;
if bal < 0 then
return true;
else
return false;
end if;
end;
end;
end banking;
begin
banking.new_acct(123,'FRANKS');
end;
execute banking.acct_dep(123,100);
execute banking.acc_wdr(123,50);
Works fine up to this point, however when running the balance check the balance amount is not visible?
SQL> set serveroutput on
SQL> begin
2 declare
3 bal accounts.balance%type;
4 begin
5 banking.acc_bal(123,bal);
6 dbms_output.put_line('Franks balance is '||bal);
7 end;
8 end;
9 /procedure acc_bal(acno IN NUMBER,
bal OUT NUMBER)
is
cursor c_balance(i_acno IN accounts.acno%type) is
select balance
from accounts
where acno = i_acno;
l_acc_bal accounts.balance%type;
begin
open c_balance(acno);
fetch c_balance into l_acc_bal;
close c_balance;
bal := l_acc_bal;
end; -
How call procedure or package from Oracle BI Publisher 10.1.3.2.1
Hi Gurus,
I need to call a procedure or package from Oracle BI Publisher 10.1.3.2.1 by passing parameters, I do it because it would be easier to fill a table as the report that asks for is too complex (8 breaks, 5 dblinks, 20 tables, etc).
I'm not using the Oracle XML. Review include the following solutions:
Re: Stored procedures and dynamic columns
Re: Is it possible to use Stored Procedures in BI Publisher GUI?
Re: PL/SQL Stored Procedure w/ XML Template?
But none of them useful for me was the level of complexity.
Best regards.Hi Vetsrini,
I write the sentence as it showed in the previous thread
select from whc_kk_v2.whc_p_kk_publisher (pv_msgerror =>: msgerror,*
pv_pro1 =>: prov_1,
pv_pro2 =>: prov_2)
run when I get the error BIP
ORA-00933: SQL command not properly ended
Show me I'm doing wrong, or who may be causing the error. I tried everything but does not leave, please your help.
Best regards -
Help....on stored procedure (or package)
Hi,
I have any problem to create stored procedure in Oracle, Can you help me?
I have to create a stored procedure (or package) in order to reserve the free rooms to the students in the period comprised between the DATE_START and DATE_END.
Table of the present rooms in building BL1 (RM): SEX 1 = M - SEX 2 = F SEX = 0 (ROOM WITHOUT SEX)
BL_ID.....FL_ID.......RM_ID.........SEX......RM_STD.....RM_CAT
BL1.........1..........101..............1........S........ROOM
BL1.........1..........102..............0........D........ROOM
BL1.........1..........103..............2........T........ROOM
BL1.........2..........201..............2........S........ROOM
BL1.........2..........202..............1........D........ROOM
BL1.........2..........203..............1........T........ROOM
BL1.........3..........301..............2........S........APARTMENT
BL1.........3..........302..............2........D........APARTMENT
BL1.........3..........303..............1........T........APARTMENT
BL1.........3..........304..............1........D........APARTMENT
BL1.........3..........305..............0........D........APARTMENT
Table of the students (EM):
EM_ID...........BL_ID.......FL_ID........RM_ID........COD_STUD
SABRINA..........BL1..........1............102.........524505
TAKEM............BL1..........1............103.........569673
SERAFINO.........BL1..........1............103.........589920
STELLA...........BL1..........1............102.........574659
CHIARA...........BL1..........1............101.........587845
VIDAL............BL1..........1............102.........602877
ROSARIA..........BL1..........2............202.........517070
LUCA.............BL1..........2............201.........602743
DANIELA..........BL1..........2............203.........602865
ANNAMARIA........BL1..........3............305.........588721
LUIGI............BL1..........3............304.........546517
Type of rooms (RM_STD):
RM_STD.......STD_EM........DESCRIPTION
D.............4..............DOUBLE
T.............6..............TRIPLE
S.............2..............SINGLE
Tables of the reservations carried out from the students (RMPCT):
EM_ID......BL_ID........FL_ID......RM_ID......DATE_START.......DATE_END.......COD_STUD
CHIARA......BL1.........1..........101.......11/02/2004.......12/02/2004.......587845
CHIARA......BL1.........1..........101.......03/02/2005.......16/02/2005.......587845
SERAFINO....BL1.........1..........102.......12/02/2004.......19/02/2004.......589920
VIDAL.......BL1.........1..........102.......16/02/2004.......01/03/2004.......602877
SERAFINO....BL1.........1..........103.......01/02/2004.......15/02/2004.......589920
TAKEM.......BL1.........1..........103.......04/02/2005.......10/02/2005.......569673
LUCA........BL1.........2..........201.......03/02/2005.......23/02/2005.......602743
ROSARIA.....BL1.........2..........202.......03/02/2005.......16/02/2005.......517070
DANIELA.....BL1.........2..........203.......03/02/2005.......04/02/2005.......602865
LUIGI.......BL1.........3..........301.......03/02/2005.......23/02/2005.......546517
VALERIA.....BL1.........3..........302.......12/02/2004.......16/02/2004.......515348
CHIARA......BL1.........3..........302.......05/02/2004.......15/02/2004.......587845
CHIARA......BL1.........3..........304.......10/02/2004.......12/02/2004.......587845
CHIARA......BL1.........3..........305.......20/01/2004.......04/02/2004.......587845
ANNAMARIA...BL1.........3..........305.......03/02/2005.......16/02/2005.......588721
INPUT PARAMETERS:
CREATE OR REPLACE Procedure RESERVE_ROOMS (stud_name varchar2,
cod_stud varchar2,
bl_in varchar2,
fl_in varchar2,
rm_in in varchar2,
sex_in varchar2,
date_start_in varchar2,
date_end_in varchar2)
CONDITIONS:
verify if there are students in table EM:
select count (1)
into v_appo
from em
where em_id = stud_name
and cod_stud = cod_stud;
if v_appo = 0 then
insert new student:
insert into em (em_id,cod_sud,sex)
values (stud_name,cod_stud,sex_in);
Now I must verify the free rooms in the period comprised between the DATE_START_IN and DATE_END_IN.
I tried this query: (seem correct...have you any idea?)
select bl_id,fl_id,rm_id,RM_STD
from rm
where (bl_id,fl_id,rm_id,RM_STD) not in (select a.bl_id,a.fl_id,a.rm_id,A.RM_STD
from rm a, rmpct b
where a.bl_id=b.bl_id
and a.fl_id=b.fl_id
and a.rm_id=b.rm_id
AND((b.date_start <= TO_DATE(date_start_in, 'dd-mm-YYYY')
AND b.date_end >= TO_DATE(date_end_in, 'dd-mm-YYYY'))
OR ( b.date_end <= TO_DATE(date_end_in, 'dd-mm-YYYY'))
AND b.date_end >= TO_DATE(date_start_in, 'dd-mm-YYYY')
OR ( b.date_start >= TO_DATE(date_start_in, 'dd-mm-YYYY')
and b.date_start <= TO_DATE(date_end_in, 'dd-mm-YYYY')
AND b.date_end >= TO_DATE(date_end_in, 'dd-mm-YYYY'))))
with this query I get all free rooms in period date_start_in - date_end_in, but I must,also,verify if there are double or triple rooms (reserved) with minus of 2 (double) or minus of 3 (triple) students. If there are I can reserved these rooms.
I tried to verify with these steps:
CREATE OR REPLACE VIEW COUNT_EM ( BL_ID,
FL_ID, RM_ID, NUMBER_EM ) AS
(SELECT rm.bl_id, rm.fl_id, rm.rm_id, COUNT(*) as numero_em
FROM em, rm
WHERE em.bl_id(+) = rm.bl_id
AND em.fl_id(+) = rm.fl_id
AND em.rm_id(+) = rm.rm_id
and rm.rm_std in ('S', 'D', 'T')
group by rm.bl_id, rm.fl_id, rm.rm_id)
CREATE OR REPLACE VIEW COUNT_RMPCT ( BL_ID,
FL_ID, RM_ID, STD_EM, NUMBER_RMPCT
) AS
SELECT rm.bl_id, rm.fl_id, rm.rm_id, rmstd.std_em, COUNT(*) as numero_rmpct
FROM rm, rmpct,rmstd
WHERE rmpct.bl_id(+) = rm.bl_id
AND rmpct.fl_id(+) = rm.fl_id
AND rmpct.rm_id(+) = rm.rm_id
and rm.rm_std=rmstd.rm_std
and rm.rm_std in ('S', 'D', 'T')
AND((rmpct.date_start <= TO_DATE(date_start_in', 'dd-mm-YYYY')
AND rmpct.date_end >= TO_DATE(date_end_in, 'dd-mm-YYYY'))
OR ( rmpct.date_end <= TO_DATE(date_end_in, 'dd-mm-YYYY'))
AND rmpct.date_end >= TO_DATE(date_start_in, 'dd-mm-YYYY')
OR ( rmpct.date_start >= TO_DATE(date_start_in, 'dd-mm-YYYY')
and rmpct.date_start <= TO_DATE(date_end_in, 'dd-mm-YYYY')
AND rmpct.date_end >= TO_DATE(date_end_in, 'dd-mm-YYYY')))
group by rm.bl_id, rm.fl_id, rm.rm_id, rmstd.std_em
AND FINALLY:
select a.bl_id, a.fl_id, a.rm_id, a.NUMBER_RMPCT, B.NUMBER_EM, a.std_em, (a.std_em - (a.NUMBER_RMPCT+B.NUMBER_EM)) RM_FREE
from COUNT_RMPCT a, COUNT_EM b
where a.bl_id=b.bl_id
and a.fl_id=b.fl_id
and a.rm_id=b.rm_id
if RM_FREE > 0 THEN there are free rooms (D or T) between those occupied in that period.
Now If the room (bl_in,fl_in,rm_in) is free I can reserve inserting it in the table RMPCT:
INSERT INTO rmpct (bl_id, fl_id, rm_id,em_id,cod_stud,date_start, date_end)
values(bl_in,fl_in,rm_in,stud_name,cod_stud,date_start_in,date_end_in);
If I haven't rm_in (can be null) I must reserve the first free room (random).
after these controls: I update table of the students:
UPDATE em
Set bl_id = BL_IN,fl_id= FL_IN,rm_id=rm_in
where em_id=stud_name
and cod_stud=cod_stud;
Finally I must make a control on the sex of the room, because there are rooms that have sex=0
if RM.SEX <> 0 then
null
else
if rm_cat = 'ROOM' then
UPDATE rm
set sex = sex_in
where bl_id = in
and fl_id = in
and rm_id = in;
if rm_cat = 'APARTMENT' then (update on all rooms)
UPDATE rm
set sex = sex_in
where bl_id = in
and fl_id = in;
IF v_appo > 0 then
Same controls except: insert into em (em_id,cod_sud,sex)
values (stud_name,cod_stud,sex_in);
How I can insert in one stored procedure (or package) all these instructions and controls?
Thanks in advance!In the following demonstation, I have changed the names of some of your variables, in order to standardize them. I have prefaced input parameters with p_ and local variables with v_ and followed them with the name of the column that they are associated with when appropriate. This avoids conflicts with any column names and makes the code easier to read and follow. I have also used table_name.column_name%type to specify the data type associated with the variables instead of using varchar2. That way, if the data type of the columns changes, the code does not have to be updated. This is standard practice.
In your first insert statement, you have attempted to insert sex into the em table, but there is no sex column in the em table data that you displayed, so I removed the sex.
Instead of using a complicated mess of views and such to check whether there is a room available and then assign it, I have used just one select statement to select an available room and used an exception clause that handles a no_data_found exception to deal with when there is no room available.
I have greatly simplified your checking of dates within that select statement.
You were on the right track with the outer joins and grouping and checking for single, double, or triple rooms. Instead of count, I have used sum and nvl2, so that only the occupied rooms are counted and the rows generated by the outer join are zeroes.
I have used the nvl function to allow for null values in the input parameters, so that any room can be selected. I used dbms_random.random to ensure that the rows are ordered randomly, but you can leave that out if it is really not that critical that the result be truly random and any row will do. I have used rownum=1 in an outer query to select just one row.
When you select from a table in pl/sql, you have to select into something. You cannot just issue a select statement, then use an if statement to compare some value in the select statement. For example, you cannot use "if rm.sex ..." you have to select rm.sex into a variable, like v_sex, then use "if v_sex ...". So, I have selected the result of the select statement into local variables, then used those variables for comparisons. I have also used those variables for inserting and updating the appropriate tables, rather than just using the original input parameters, since some of them may have been null.
In the example below, I have demonstrated how the procedure rejects an unavailable room, accepts a specific available room, and randomly assigns a room.
-- procedure:
scott@ORA92> CREATE OR REPLACE PROCEDURE reserve_rooms
2 -- input parameters:
3 (p_em_id IN em.em_id%TYPE,
4 p_cod_stud IN em.cod_stud%TYPE,
5 p_bl_id IN rm.bl_id%TYPE,
6 p_fl_id IN rm.fl_id%TYPE,
7 p_rm_id IN rm.rm_id%TYPE,
8 p_sex IN rm.sex%TYPE,
9 p_date_start IN VARCHAR2,
10 p_date_end IN VARCHAR2)
11 AS
12 -- local variables:
13 v_appo INTEGER;
14 v_bl_id rm.bl_id%TYPE;
15 v_fl_id rm.fl_id%TYPE;
16 v_rm_id rm.rm_id%TYPE;
17 v_rm_cat rm.rm_cat%TYPE;
18 v_sex rm.sex%TYPE;
19 BEGIN
20 -- verify if the student is in table em:
21 SELECT COUNT (*)
22 INTO v_appo
23 FROM em
24 WHERE em_id = p_em_id
25 AND cod_stud = p_cod_stud;
26 -- if the student is not in table em, then insert new student:
27 IF v_appo = 0 THEN
28 INSERT INTO em (em_id, cod_stud)
29 VALUES (p_em_id, p_cod_stud);
30 END IF;
31 BEGIN
32 -- find available room:
33 SELECT bl_id, fl_id, rm_id, sex, rm_cat
34 INTO v_bl_id, v_fl_id, v_rm_id, v_sex, v_rm_cat
35 FROM (SELECT rm.bl_id, rm.fl_id, rm.rm_id, rm.sex, rm.rm_cat
36 FROM rmpct, rm
37 WHERE rm.bl_id = rmpct.bl_id (+)
38 AND rm.fl_id = rmpct.fl_id (+)
39 AND rm.rm_id = rmpct.rm_id (+)
40 AND rm.bl_id = NVL (p_bl_id, rm.bl_id)
41 AND rm.fl_id = NVL (p_fl_id, rm.fl_id)
42 AND rm.rm_id = NVL (p_rm_id, rm.rm_id)
43 AND (rm.sex = p_sex OR rm.sex = 0)
44 AND rmpct.date_start (+) <= TO_DATE (p_date_end, 'DD-MM-YYYY')
45 AND rmpct.date_end (+) >= TO_DATE (p_date_start, 'DD-MM-YYYY')
46 GROUP BY rm.bl_id, rm.fl_id, rm.rm_id, rm.sex, rm.rm_cat, rm.rm_std
47 HAVING SUM (NVL2 (rmpct.rm_id (+), 1, 0))
48 < DECODE (rm_std, 'S', 1, 'D', 2, 'T', 3)
49 ORDER BY DBMS_RANDOM.RANDOM)
50 WHERE ROWNUM = 1;
51 -- reserve room:
52 INSERT INTO rmpct (bl_id, fl_id, rm_id, em_id, cod_stud, date_start, date_end)
53 VALUES (v_bl_id, v_fl_id, v_rm_id, p_em_id, p_cod_stud,
54 TO_DATE (p_date_start, 'DD-MM-YYYY'),
55 TO_DATE (p_date_end, 'DD-MM-YYYY'));
56 -- update students:
57 UPDATE em
58 SET bl_id = v_bl_id, fl_id = v_fl_id, rm_id = v_rm_id
59 WHERE em_id = p_em_id
60 AND cod_stud = p_cod_stud;
61 -- update sex of room or apartment floor:
62 IF v_sex = 0 THEN
63 IF v_rm_cat = 'ROOM' THEN
64 UPDATE rm
65 SET sex = p_sex
66 WHERE bl_id = v_bl_id
67 AND fl_id = v_fl_id
68 AND rm_id = v_rm_id;
69 ELSIF v_rm_cat = 'APARTMENT' THEN
70 UPDATE rm
71 SET sex = p_sex
72 WHERE bl_id = v_bl_id
73 AND fl_id = v_fl_id;
74 END IF;
75 END IF;
76 EXCEPTION
77 -- if no room is available:
78 WHEN NO_DATA_FOUND THEN
79 RAISE_APPLICATION_ERROR (-20001, 'Sorry, there is no such room available.');
80 END;
81 END reserve_rooms;
82 /
Procedure created.
scott@ORA92> SHOW ERRORS
No errors.
-- rejects unavailable room of wrong sex:
scott@ORA92> EXECUTE reserve_rooms ('BARBARA', 654321, 'BL1', 1, 101, 2, '04-02-2005', '10-02-2005')
BEGIN reserve_rooms ('BARBARA', 654321, 'BL1', 1, 101, 2, '04-02-2005', '10-02-2005'); END;
ERROR at line 1:
ORA-20001: Sorry, there is no such room available.
ORA-06512: at "SCOTT.RESERVE_ROOMS", line 79
ORA-06512: at line 1
-- accepts available room of same sex:
scott@ORA92> EXECUTE reserve_rooms ('BARBARA', 654321, 'BL1', 1, 103, 2, '04-02-2005', '10-02-2005')
PL/SQL procedure successfully completed.
-- assigns random available room of same or no sex:
scott@ORA92> EXECUTE reserve_rooms ('BARBARA', 654321, NULL, NULL, NULL, 2, '11-02-2005', '23-02-2005')
PL/SQL procedure successfully completed.
-- results:
scott@ORA92> -- one and only one row added to em table:
scott@ORA92> SELECT * FROM em WHERE em_id = 'BARBARA'
2 /
EM_ID BL_I FL_ID RM_ID COD_STUD
BARBARA BL1 1 102 654321
scott@ORA92> -- rooms reserved and other people who have reserved same room
scott@ORA92> -- (there are 3 who reserved a double room, but only 2 at a time):
scott@ORA92> SELECT *
2 FROM rmpct
3 WHERE (bl_id, fl_id, rm_id) IN
4 (SELECT bl_id, fl_id, rm_id
5 FROM rmpct
6 where em_id = 'BARBARA')
7 /
EM_ID BL_ FL_ID RM_ID DATE_STAR DATE_END COD_STUD
BARBARA BL1 1 102 11-FEB-05 23-FEB-05 654321
SERAFINO BL1 1 102 12-FEB-04 19-FEB-04 589920
VIDAL BL1 1 102 16-FEB-04 01-MAR-04 602877
SERAFINO BL1 1 103 01-FEB-04 15-FEB-04 589920
TAKEM BL1 1 103 04-FEB-05 10-FEB-05 569673
BARBARA BL1 1 103 04-FEB-05 10-FEB-05 654321
6 rows selected.
scott@ORA92> -- rooms reserved are all correct sex
scott@ORA92> -- (note that room 102 was updated from 0 to 2):
scott@ORA92> SELECT *
2 FROM rm
3 WHERE (bl_id, fl_id, rm_id) IN
4 (SELECT bl_id, fl_id, rm_id
5 FROM rmpct
6 where em_id = 'BARBARA')
7 /
BL_ FL_ID RM_ID SEX R RM_CAT
BL1 1 102 2 D ROOM
BL1 1 103 2 T ROOM
scott@ORA92> -
Sql Developer - View source code of procedures, functions & packages in another schema
Our developers need the ability to view procedures, function, packages etc. in the production database (using SQL DEVELOPER). They don't have access to sign on as the owner of these
objects in Production. They must use their own limited access UserID for this purpose.
This limited access UserID has been granted select privilege on DBA_SOURCE & DBA_OBJECTS. The developers need the ability to view the source of these object via
the tree view in SQL DEV. They should be able to click on "other users" in the SQL DEV tree view and see a listing of the owner schema objects. Then they should
be able to select the desired object and view the source code. These developers are used to using GUI interfaces. Selecting from DBA_SOURCE would not be an
option for them.
I understand that if the limited user is granted SELECT ANY DICTIONARY or SELECT_CATALOG_ROLE then this functionality will work. The problem is those
privileges/roles provide much more access than should be granted to these limited access users. Granting DBA to these users is also not an option.
In TOAD and other end-user tools this functionality works when only select privilege on DBA_SOURCE & DBA_OBJECTS has been granted. We need this same functionality
in SQL DEV.
While searching this forum and the internet, I see that other installations have this same issue.
Please enhance SQL Developer with this functionality.
Thank you, ellenJust to double check that I'm interpreting the problem correctly, is the following true:
select * from all_objects where object_name = 'DBA_SOURCE'
returns nothing
select * from dba_source where name = your PL/SQL module
returns all the code -
Apex 4 error ORA-04042 procedure, function, package body does not exist
Hi all,
I was instaling Oracle Application Expres 10g on Linux ubuntu and I was download and unzip apex 4
on /usr/lib/oracle/xe/
then connect as SYS as sysdba with pass and
start
@/usr/lib/oracle/xe/apex/apexins SYSAUX SYSAUX TEMP /i/
installation starting
... after 5 minutes theres end of log file>
I. O R A C L E S Y S I N S T A L L P R O C E S S
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/dev_grants.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/core_grants.sql"
...CONNECT as the Oracle user who will own the APEX engine
Session altered.
III. I N S T A L L A P E X P A C K A G E S P E C S
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_plsql_editor.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_model_api.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_util.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_plugin_f4000.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_image_generator.sql"
Installing Team Development objects
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/team_tab.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team_api.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team_gen_api.sql"
Installing Application Migration Workshop objects
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_create_ddl.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_create_ddl.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_exporter_ins.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/mig_views.sql"
...installing Application Migration Workshop package spec
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_acc_load.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_load_xml.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_olb_load_xml.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_update_apx_app.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_utilities.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frmmenu_load_xml.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_rpt_load_xml.sql"
...install Application Migration Workshop package body
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_acc_load.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_load_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_olb_load_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_update_apx_app.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frm_utilities.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_frmmenu_load_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_mig_rpt_load_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_item_comps.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_translation_utilities.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_lov.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_item.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_button.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_translation_utilities.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/seed.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/sync.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/layout.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_lov_used_on_pages.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_query_builder.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_sw_object_feed.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_load_data.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_load_excel_data.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_metadata.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copyu.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_tab_mgr.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/generate_ddl.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/table_drill.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_download.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_copy_page.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/generate_table_api.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_gen_hint.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_xliff.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_create_model_app.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_admin.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_help.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_data_quick_flow.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_theme_files.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_session_mon.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_sw_page_calls.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_wiz_confirm.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_page_map.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_drag_layout.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_dataload_xml.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_ui_default_update.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_mig_projects_update.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_install_wizard.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_dictionary.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_advisor.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_search.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_plugins.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_4000_ui.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_4050_ui.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_workspace_reports.sql"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_p4150.sql"
timing for: Development Package Specs
Elapsed: 00:00:00.02
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_plsql_editor.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_model_api.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_util.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_plugin_f4000.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_image_generator.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/layout.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_query_builder.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_sw_object_feed.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_load_data.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_load_excel_data.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copy_metadata.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/copyu.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_tab_mgr.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/generate_ddl.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/table_drill.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_download.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_copy_page.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/generate_table_api.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_gen_hint.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_translation_utilities.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_xliff.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_create_model_app.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_help.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_data_quick_flow.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_theme_files.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_session_mon.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_sw_page_calls.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_wiz_confirm.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_page_map.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_drag_layout.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_dataload_xml.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_ui_default_update.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/apex_mig_projects_update.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_install_wizard.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_dictionary.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_advisor.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_search.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_plugins.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_4000_ui.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_4050_ui.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_translation_utilities.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team_api.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_team_gen_api.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_workspace_reports.plb"
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_flow_f4000_p4150.plb"
...install demonstration Oracle APEX application package specs
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/collections_showcase.sql"
...install demonstration Oracle APEX application package bodies
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/collections_showcase.plb"
...install demonstration tables
SP2-0310: unable to open file "/usr/lib/oracle/xe/apex/coreinscore/wwv_demo_tab.sql"
timing for: Development Package Bodies
Elapsed: 00:00:00.03
grant execute on wwv_mig_acc_load to public
ERROR at line 1:
ORA-04042: procedure, function, package, or package body does not exist
is there any solution?
regards
GordanInstall 4.0 pass ok!
1. I was changing apexins.sql
as PREFIX='@/usr/lib/oracle/xe/apex/'
and add path to coreins.sql as @/usr/lib/oracle/xe/apex/coreins.sql
2. create two folders coreinscore and coreinsbuild and copy all files from folder core and folder build
3. copy and rename endins.sql as coreinsendins.sql
after 10 min instalation pass ok!
Gordan
Edited by: useruseruser on Jun 29, 2010 2:12 PM -
Calling of stored procedure in package
Hi,
I have one stored procedure A. And one package of name P1.
I have execute previlage of package but not having any previlge of stored procedure.
and In package P1 stored procedure A is called. then this packege is work or it will genrate an Error?Oracle users - userA, userB
Stored procedure - procedure1
Package - package1
Who is owner of procedure1 and package1?
Which privileges of userA/userB on procedure1 and package1? -
How can I compile all functions, procedures and packages with a script?
I need to compile all functions, procedures and packages of 5 schemas (users) with a script.
How can I do it?
Thanks!you can create a script to select all invalid objects in those schemas Since Oracle 8 introduced NDS this approach has struck me as a trifle old fashioned. It's much simpler to loop round the query in PL/SQL and use EXECUTE IMMEDIATE to fire off the DDL statements. No scripts, no muss, no fuss.
Having said that, the problem with this approach and also with using DBMS_UTILITY.COMPILE_SCHEMA is that they do not compile all the invalid objects in dependency order. This may result in programs being invalidated by the subsequent compilation of dependencies. This is due to the introduction of Java into the database.
The UTLRP script is much better, because it (usually) avoids cyclic references. But you still may need to run it more than once.
In general it is better to avoid sledgehammer recompilations (like DBMS_UTILITY.COMPILE_SCHEMA, which starts by invalidating all the objects). If we have twenty invalid objects, nineteen of which are dependencies of the twentieth, we actually only need to recompile the master object, as recompiling it will trigger the recompilation of all the others.
Cheers, APC -
Oracle stored Procedure and Packages in CR4E
Hi,
I want to use Stored Procedure in CR4E. I don't know how to use Stored Procedures and packages in Crystal Reports for Eclipse. In the data source explorer I can only see the Tables, Views and Stored Procedures but not packages from my Schema and when I can only drag & drop the Tables and Views into the Field Explorer, I can't drag & Drop the Stored Procedures.
I managed to attached the stored procedure from CR studio. I opened the report in CR4E and I can see the stored procedure and can preview the data. When I try to run the report and override the datasource, it throws oracle error saying "ORA-01008: Not all variables bound". When I tried to use the option
DBOptions._doNotVerifyDB
while replacing connection I get the this error
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
at java.lang.Boolean.compareTo(Boolean.java:26)
at com.crystaldecisions.sdk.occa.report.lib.ClonableMap.hasContent(ClonableMap.java:112)
at com.crystaldecisions.client.helper.CloneUtil.hasContent(CloneUtil.java:135)
at com.crystaldecisions.sdk.occa.report.data.ConnectionInfo.hasContent(SourceFile:151)
at com.crystaldecisions.client.helper.CloneUtil.hasContent(CloneUtil.java:135)
at com.crystaldecisions.sdk.occa.report.data.Table.hasContent(SourceFile:286)
at com.crystaldecisions.sdk.occa.report.data.Procedure.hasContent(SourceFile:212)
at com.crystaldecisions.sdk.occa.report.lib.ArrayListMerger.haveMatchingContent(ArrayListMerger.java:232)
at com.crystaldecisions.sdk.occa.report.lib.ArrayListMerger.mergePass(ArrayListMerger.java:138)
at com.crystaldecisions.sdk.occa.report.lib.ArrayListMerger.merge(ArrayListMerger.java:86)
at com.crystaldecisions.sdk.occa.report.lib.ControllableList.copyTo(ControllableList.java:68)
at com.crystaldecisions.sdk.occa.report.data.Database.copyTo(SourceFile:105)
at com.crystaldecisions.sdk.occa.report.lib.ControllableHelper.copyToPreservingReferences(ControllableHelper.java:153)
at com.crystaldecisions.sdk.occa.report.application.ReportClientDocument.a(SourceFile:2556)
at com.crystaldecisions.sdk.occa.report.application.b9.onDataSourceChanging(SourceFile:315)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:971)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:4078)
at com.crystaldecisions.sdk.occa.report.application.bv.new(SourceFile:121)
at com.crystaldecisions.sdk.occa.report.application.bv.int(SourceFile:91)
at com.crystaldecisions.proxy.remoteagent.UndoUnitBase.performDo(SourceFile:151)
at com.crystaldecisions.proxy.remoteagent.UndoUnitBase.a(SourceFile:106)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:2159)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.mapFields(SourceFile:4061)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:3914)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.replaceConnection(SourceFile:3880)
at
Please advice if Stored procedures and packages are supported in CR4E ?Hi, Jack76,
According to the [CR4E Release Notes|http://help.sap.com/businessobject/product_guides/cr4E/en/cr4e_relnotes_en.pdf] (available from the [CR4E Download page|http://www.businessobjects.com/campaigns/forms/downloads/crystal/eclipse/datasave.asp]), stored procedures are supported, as long as they don't use parameters that need null values.
I don't see any references to packages.
Bryan -
Read access to procedures,function,packages and triggers
Hi,
I created a user with CREATE SESSION,SELECT ANY TABLE privilege. My objective is to create a user with read only access to other schemas. But the newly created user is not able to read procedures,function,packages and triggers. The new user need read access to procedures,function,packages and triggers. What is the priviege required for this access? Please help me to resolve this issue.
Regards,
Mat.Hi,
Grant select all will give select privileges to all schema level objects except procedures,function,packages and triggers. But I need to grant read privileges on these objects to newly created user.
Regards,
Mat. -
How to hide Procedures,Functions,Packages source code?
Hi,
I tried to find a way to hide all our application oracle
database's all Procedures, Functions, Packages PL/SQL Source
code. But I haven't find the way. Could Oracle do this? ( MS SQL
Server can)
Thanks in advance,
Cheng
nullcheng (guest) wrote:
: Hi,
: I tried to find a way to hide all our application oracle
: database's all Procedures, Functions, Packages PL/SQL Source
: code. But I haven't find the way. Could Oracle do this? ( MS
SQL
: Server can)
: Thanks in advance,
: Cheng
Hi Cheng,
You may be interested in what Quintessence Systems (Berkshire,
United Kingdom - http://www.quintessence.demon.co.uk) have
developed.
Addressed at precisely this kind of problem area, we've
developed a technology called F2J (Formula to Java). F2J
automatically converts stored PL/SQL (Procedures, Functions and
Packages) to Java classes which can be loaded and run as Stored
Procedures in an Oracle8i database.
If you think this may be able to assist you then check out the
website for further info or email me directly.
How this is helpful.
Elton Barendse
null -
ORA-04044: procedure, function, package, or type is not allowed here
Hi,
I am trying to build an object hierarchy.The object hirarcy is for a multi division, multi department, multi cost center and multi operation Organisation.Multiple department can store into multiple divisions, multiple cost center can store into multiple departments, multiple operations can store into multiple cost centers.
The structure I try to built like this:
create type div_obj_new as object
(id number,
divdesc varchar2(100)
create type div_obj_tab as
table of div_obj_new
create type dept_obj_new as object
(id number,
deptdesc varchar2(100),
dept_div number
create type dept_obj_tab as
table of dept_obj_new
create type cctr_obj_new as object
(id number,
cctrdesc varchar2(100),
cctr_dept number
create type cctr_obj_tab as
table of cctr_obj_new
create type oper_obj_new as object
(id number,
operdesc varchar2(100),
oper_cctr number
create type oper_obj_tab as
table of oper_obj_new
==========================
create type div_obj_type as object
(divid div_obj_tab)
NOT FINAL
create type dept_obj_type under div_obj_type
(deptid dept_obj_tab)
NOT FINAL
create type cctr_obj_type under dept_obj_type
(cctrid cctr_obj_tab)
NOT FINAL
create type oper_obj_type under cctr_obj_type
(operid oper_obj_tab)
NOT FINAL
=======This Table creation is not working=================
create table organisation
(div div_obj_type,
dept dept_obj_type,
cctr cctr_obj_type,
oper oper_obj_type)
nested table div store as division_table
nested table dept store as department_table
nested table cctr store as costcntr_table
nested table oper store as operation_table
nested table oper store as operation_table
ERROR at line 9:
ORA-22912: specified column or attribute is not a nested table type
=========================================================
Then I try to insert record into the div_obj_type instead of organisation table as it was not working.
The insert script is as follows:
===================================
insert into div_obj_type values
div_obj_tab
(div_obj_new(01,'Division 01'),
div_obj_new(02,'Division 02'),
div_obj_new(03,'Division 03'),
div_obj_new(04,'Division 04')
dept_obj_tab
dept_obj_new(10,'Department 10',1),
dept_obj_new(11,'Department 11',1),
dept_obj_new(12,'Department 12',2),
dept_obj_new(13,'Department 13',3),
dept_obj_new(14,'Department 14',4),
dept_obj_new(15,'Department 15',5),
dept_obj_new(16,'Department 16',6),
dept_obj_new(17,'Department 17',7)
cctr_obj_tab
cctr_obj_new(100,'Cost Center 100',10),
cctr_obj_new(101,'Cost Center 101',11),
cctr_obj_new(100,'Cost Center 102',12),
cctr_obj_new(100,'Cost Center 103',13),
cctr_obj_new(100,'Cost Center 104',14),
cctr_obj_new(100,'Cost Center 105',15),
cctr_obj_new(100,'Cost Center 106',16),
cctr_obj_new(100,'Cost Center 107',17),
cctr_obj_new(100,'Cost Center 108',10),
cctr_obj_new(100,'Cost Center 109',11),
cctr_obj_new(100,'Cost Center 110',12)
oper_obj_tab
oper_obj_new(1000,'Operation 1000',100),
oper_obj_new(1000,'Operation 1001',101),
oper_obj_new(1000,'Operation 1002',102),
oper_obj_new(1000,'Operation 1003',103),
oper_obj_new(1000,'Operation 1004',104),
oper_obj_new(1000,'Operation 1005',105),
oper_obj_new(1000,'Operation 1006',106),
oper_obj_new(1000,'Operation 1007',107),
oper_obj_new(1000,'Operation 1008',108),
oper_obj_new(1000,'Operation 1009',109),
oper_obj_new(1000,'Operation 1010',110),
oper_obj_new(1000,'Operation 1011',101),
oper_obj_new(1000,'Operation 1012',102),
oper_obj_new(1000,'Operation 1013',103),
oper_obj_new(1000,'Operation 1014',104),
oper_obj_new(1000,'Operation 1015',105),
oper_obj_new(1000,'Operation 1016',106),
oper_obj_new(1000,'Operation 1017',107),
oper_obj_new(1000,'Operation 1018',108)
insert into div_obj_type values
ERROR at line 1:
ORA-04044: procedure, function, package, or type is not allowed here
Actually I want to create an object view or object table with all the details of division, department , cost center and operation and it will store depending upon the respective upper level hirarcy 's id.For eg. department details can be fetched through division id etc..
So I can't figure out what to do for this kind of structure and how to do that.
I am running Oracle Release 2 (9.2.0.1.0) for Windows 2000.
Any help , advice or suggestions will be appreciated.
Thanks & Regards
NiharHi Cameron,
Thanks for your great suggestion.Actually what you have suggested is correct and it was tested by me correctly.But actually I want to store records in the multiple objects hirarcy depending upon the respective upper level hirarcy 's id.For say how can I retrive all records related to divisionID which is in the top level hirarchy? So by selecting divisionID=01, how can I easily select all depts,cost centers and Operation details?
Again I have another problem , when try to retrive record using PL/SQL I got some problem.
Structure as created above.Again I am giving here.
create type div_obj_new as object
(id number,
divdesc varchar2(100)
create type div_obj_tab as
table of div_obj_new
create type dept_obj_new as object
(id number,
deptdesc varchar2(100),
dept_div number
create type dept_obj_tab as
table of dept_obj_new
create type cctr_obj_new as object
(id number,
cctrdesc varchar2(100),
cctr_dept number
create type cctr_obj_tab as
table of cctr_obj_new
create type oper_obj_new as object
(id number,
operdesc varchar2(100),
oper_cctr number
create type oper_obj_tab as
table of oper_obj_new
create table organisation
(div div_obj_tab,
dept dept_obj_tab,
cctr cctr_obj_tab,
oper oper_obj_tab)
nested table div store as division_table
nested table dept store as department_table
nested table cctr store as costcntr_table
nested table oper store as operation_table
insert into organisation values
div_obj_tab
(div_obj_new(01,'Division 01'),
div_obj_new(02,'Division 02'),
div_obj_new(03,'Division 03'),
div_obj_new(04,'Division 04')
dept_obj_tab
dept_obj_new(10,'Department 10',1),
dept_obj_new(11,'Department 11',1),
dept_obj_new(12,'Department 12',2),
dept_obj_new(13,'Department 13',3),
dept_obj_new(14,'Department 14',4),
dept_obj_new(15,'Department 15',5),
dept_obj_new(16,'Department 16',6),
dept_obj_new(17,'Department 17',7)
cctr_obj_tab
cctr_obj_new(100,'Cost Center 100',10),
cctr_obj_new(101,'Cost Center 101',11),
cctr_obj_new(100,'Cost Center 102',12),
cctr_obj_new(100,'Cost Center 103',13),
cctr_obj_new(100,'Cost Center 104',14),
cctr_obj_new(100,'Cost Center 105',15),
cctr_obj_new(100,'Cost Center 106',16),
cctr_obj_new(100,'Cost Center 107',17),
cctr_obj_new(100,'Cost Center 108',10),
cctr_obj_new(100,'Cost Center 109',11),
cctr_obj_new(100,'Cost Center 110',12)
oper_obj_tab
oper_obj_new(1000,'Operation 1000',100),
oper_obj_new(1000,'Operation 1001',101),
oper_obj_new(1000,'Operation 1002',102),
oper_obj_new(1000,'Operation 1003',103),
oper_obj_new(1000,'Operation 1004',104),
oper_obj_new(1000,'Operation 1005',105),
oper_obj_new(1000,'Operation 1006',106),
oper_obj_new(1000,'Operation 1007',107),
oper_obj_new(1000,'Operation 1008',108),
oper_obj_new(1000,'Operation 1009',109),
oper_obj_new(1000,'Operation 1010',110),
oper_obj_new(1000,'Operation 1011',101),
oper_obj_new(1000,'Operation 1012',102),
oper_obj_new(1000,'Operation 1013',103),
oper_obj_new(1000,'Operation 1014',104),
oper_obj_new(1000,'Operation 1015',105),
oper_obj_new(1000,'Operation 1016',106),
oper_obj_new(1000,'Operation 1017',107),
oper_obj_new(1000,'Operation 1018',108)
===============
declare
div number;
divdesc varchar2(100);
divdetails varchar2(100);
dept number;
deptdesc varchar2(100);
deptdetails varchar2(100);
cctr number;
cctrdesc varchar2(100);
cctrdetails varchar2(100);
oper number;
operdesc varchar2(100);
operdetails varchar2(100);
cursor c_div is
select d.id , d.divdesc from table(select div from organisation) d
where d.id=1;
--union
cursor c_dept is
select dp.id , dp.deptdesc "Dept Details" from table(select dept from organisation) dp
where dp.dept_div=1;
--union
cursor c_cctr is
select cc.id , cc.cctrdesc "Cctr Details" from table(select cctr from organisation ) cc
where cc.cctr_dept=10;
--union
cursor c_oper is
select op.id , op.operdesc "Oper Details" from table(select oper from organisation) op
where op.oper_cctr=100;
TYPE oper_type IS RECORD
(oper_no NUMBER,
oper_desc VARCHAR(50));
TYPE cctr_type IS RECORD
(cctr_no NUMBER,
cctr_desc VARCHAR(50),
oper_detl oper_type);
TYPE dept_type IS RECORD
(dept_no NUMBER,
dept_desc VARCHAR(50),
cctr_detl cctr_type);
TYPE div_type IS RECORD
(div_no NUMBER,
div_desc VARCHAR2(50),
dept_detl dept_type);
division_rec div_type;
begin
for i_div in c_div%rowcount
loop
exit when c_div%notfound;
division_rec.div_no:=i_div.id;
division_rec.div_desc:=i_div.divdesc;
dbms_output.put_line('Division details = ' || division_rec.div_no || division_rec.div_desc);
--end loop;
for i_dept in c_dept%rowcount
loop
exit when c_dept%notfound;
select dp.id , dp.deptdesc ,
into
division_rec.dept_detl.dept_no, division_rec.dept_detl.dept_desc
from
table(select dept from organisation) dp
where dp.dept_div=division_rec.div_no;
-- division_rec.dept_detl.dept_no:=c_dept.id;
-- division_rec.dept_detl.dept_desc:=c_dept.deptdesc;
dbms_output.put_line('Department details = ' || division_rec.dept_detl.dept_no ||
division_rec.dept_detl.dept_desc);
--end loop;
for i_cctr in c_cctr
loop
exit when c_cctr%notfound;
select cc.id , cc.cctrdesc
into
division_rec.dept_detl.cctr_detl.cctr_no ,
division_rec.dept==_detl.cctr_detl.cctr_desc
from
table(select cctr from organisation ) cc
where cc.cctr_dept=division_rec.dept_detl.dept_no;
-- division_rec.dept_detl.cctr_detl.cctr_no:=c_cctr.id;
-- division_rec.dept_detl.cctr_detl.cctr_desc:=c_cctr.cctrdesc;
dbms_output.put_line('Cost Center details = ' || division_rec.dept_detl.cctr_detl.cctr_no ||
division_rec.dept_detl.cctr_detl.cctr_desc);
--end loop;
for i_oper in c_oper%rowcount
loop
exit when c_oper%notfound;
select op.id , op.operdesc
into
division_rec.dept_detl.cctr_detl.oper_detl.oper_no,
division_rec.dept_detl.cctr_detl.oper_detal.oper_desc
from
table(select oper from organisation) op
where op.oper_cctr=division_rec.dept_detl.cctr_detl.cctr_no;
-- division_rec.dept_detl.cctr_detl.oper_detl.oper_no:=c_oper.id;
-- division_rec.dept_detl.cctr_detl.oper_detal.oper_desc:=c_oper.operdesc;
dbms_output.put_line('Operation details = ' ||
division_rec.dept_detl.cctr_detl.oper_detl.oper_no ||
division_rec.dept_detl.cctr_detl.oper_detal.oper_desc);
end loop;
end loop;
end loop;
end loop;
end;
for i_div in c_div%rowcount
ERROR at line 46:
ORA-06550: line 46, column 14:
PLS-00999: implementation restriction (may be temporary)
ORA-06550: line 46, column 1:
PL/SQL: Statement ignored
New version of PL/SQL bloc
==============================
declare
div number;
divdesc varchar2(100);
divdetails varchar2(100);
dept number;
deptdesc varchar2(100);
deptdetails varchar2(100);
cctr number;
cctrdesc varchar2(100);
cctrdetails varchar2(100);
oper number;
operdesc varchar2(100);
operdetails varchar2(100);
cnt_div number;
cnt_dept number;
cnt_cctr number;
cnt_oper number;
cursor c_div is
select d.id , d.divdesc from table(select div from organisation) d
where d.id=1;
--union
cursor c_dept is
select dp.id , dp.deptdesc from table(select dept from organisation) dp
where dp.dept_div=1;
--union
cursor c_cctr is
select cc.id , cc.cctrdesc from table(select cctr from organisation ) cc
where cc.cctr_dept=10;
--union
cursor c_oper is
select op.id , op.operdesc from table(select oper from organisation) op
where op.oper_cctr=100;
TYPE oper_type IS RECORD
(oper_no NUMBER,
oper_desc VARCHAR(50));
TYPE cctr_type IS RECORD
(cctr_no NUMBER,
cctr_desc VARCHAR(50),
oper_detl oper_type);
TYPE dept_type IS RECORD
(dept_no NUMBER,
dept_desc VARCHAR(50),
cctr_detl cctr_type);
TYPE div_type IS RECORD
(div_no NUMBER,
div_desc VARCHAR2(50),
dept_detl dept_type);
division_rec div_type;
begin
/*select count(*) into cnt_div from table(select div from organisation) d
where d.id=1;*/
for i_div in c_div
loop
exit when c_div%notfound;
division_rec.div_no:=i_div.id;
division_rec.div_desc:=i_div.divdesc;
dbms_output.put_line('Division details = ' || division_rec.div_no || division_rec.div_desc);
--end loop;
/*select count(*) into cnt_dept from table(select dept from organisation) dp
where dp.dept_div=i_div.id;*/
for i_dept in c_dept
loop
exit when c_dept%notfound;
select dp.id , dp.deptdesc
into
division_rec.dept_detl.dept_no, division_rec.dept_detl.dept_desc
from
table(select dept from organisation) dp
where dp.dept_div=division_rec.div_no;
-- division_rec.dept_detl.dept_no:=c_dept.id;
-- division_rec.dept_detl.dept_desc:=c_dept.deptdesc;
dbms_output.put_line('Department details = ' || division_rec.dept_detl.dept_no || division_rec.dept_detl.dept_desc);
--end loop;
/*select count(*) into cnt_cctr from table(select cctr from organisation ) cc
where cc.cctr_dept=division_rec.dept_detl.dept_no;*/
for i_cctr in c_cctr
loop
exit when c_cctr%notfound;
select cc.id , cc.cctrdesc
into
division_rec.dept_detl.cctr_detl.cctr_no , division_rec.dept_detl.cctr_detl.cctr_desc
from
table(select cctr from organisation ) cc
where cc.cctr_dept=division_rec.dept_detl.dept_no;
-- division_rec.dept_detl.cctr_detl.cctr_no:=c_cctr.id;
-- division_rec.dept_detl.cctr_detl.cctr_desc:=c_cctr.cctrdesc;
dbms_output.put_line('Cost Center details = ' || division_rec.dept_detl.cctr_detl.cctr_no || division_rec.dept_detl.cctr_detl.cctr_desc);
--end loop;
/*select count(*) into c_oper from table(select oper from organisation) op
where op.oper_cctr=division_rec.dept_detl.cctr_detl.cctr_no;*/
for i_oper in c_oper
loop
exit when c_oper%notfound;
select op.id , op.operdesc
into
division_rec.dept_detl.cctr_detl.oper_detl.oper_no, division_rec.dept_detl.cctr_detl.oper_detl.oper_desc
from
table(select oper from organisation) op
where op.oper_cctr=division_rec.dept_detl.cctr_detl.cctr_no;
-- division_rec.dept_detl.cctr_detl.oper_detl.oper_no:=c_oper.id;
-- division_rec.dept_detl.cctr_detl.oper_detl.oper_desc:=c_oper.operdesc;
dbms_output.put_line('Operation details = ' || division_rec.dept_detl.cctr_detl.oper_detl.oper_no || division_rec.dept_detl.cctr_detl.oper_detl.oper_desc);
end loop;
end loop;
end loop;
end loop;
end;
declare
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at line 64
I hope you might have the solutions.
Thanks & Regards
Nihar -
How to Export only some tables with procedures and packages
Hi...
I want to export only some tables and packages and procedures. Can anybody please guide me how to do this.
Thanks in advance.......
palcould you please more elobarate in your question? do you want to export data from tables or you want to get the table structure, source of procedures and packages?
Thanks
M Thiyagarajan -
ORA-04042: procedure, function, package, or package body does not exist
getting following error
I have logged on as sys
GRANT EXECUTE ON CTXSYS.CTX_DDL TO public
ERROR at line 1:
ORA-04042: procedure, function, package, or package body does not exist
does it need Oracle text installed
comp_name
Oracle Database Catalog Views
Oracle Database Packages and Types
Oracle Workspace Manager
JServer JAVA Virtual Machine
Oracle XDK
Oracle Database Java Packages
Oracle Expression Filter
Oracle XML Database
Oracle Rules Manager
Oracle Multimedia
Oracle Real Application Clusters912919 wrote:
getting following error
I have logged on as sys
GRANT EXECUTE ON CTXSYS.CTX_DDL TO public
ERROR at line 1:
ORA-04042: procedure, function, package, or package body does not exist
does it need Oracle text installed
comp_name
Oracle Database Catalog Views
Oracle Database Packages and Types
Oracle Workspace Manager
JServer JAVA Virtual Machine
Oracle XDK
Oracle Database Java Packages
Oracle Expression Filter
Oracle XML Database
Oracle Rules Manager
Oracle Multimedia
Oracle Real Application Clustersit worked for me.
09:10:19 SQL> GRANT EXECUTE ON CTXSYS.CTX_DDL TO public;
Grant succeeded.
09:10:23 SQL> -
Procedures, Functions & Packages Documentation Generated
Hi folks:
Here at my work, I have more than 500 functions, procedures & packages.
As part of our company procedures, every single DB Object, module, report, etc... must have a technical documentation.
It is, kind of waste of time, to write for every single piece of program or DB Object, the Technical Documentation.
I know (for the Java files) there is a utility which take the comments inside the java code a generate a documentation file.
Do you know if ORACLE have something similar (any utility, plug-in or aything else) or do you know if a third-party software could do that.
Thanks a lot for your help.
AbdelFollowups here (duplicate):
Procedures, Functions & Packages Documentation
Maybe you are looking for
-
Another error -8 :(
Well I've been happy with my purchase of the MacBook up until I couldnt get my iChat AV working (except for once for a minute). Brand new MacBook 2.16ghz. I've tried using AirPort to connect wirelessly and with an ethernet cord to my Linksys WRT54GX4
-
I have a KT4V and would like to install ati 9600XT. Do I need to upgrade BIOS?
I have a KT4V (MS6712) running version 1.0 BIOS (never updated). I tried an ATI Radeon 9600XT a couple of days ago. The system and display went nuts. I figured the card was DOA, but I have since reaad on this board that a newer version of the BIOS
-
Hello Experts, we wan to create some custom logic to Remove some orders from campaign. For this we have created a function and removing the order from campaign in /SAPAPO/CDPS_FDISHEU->BEFORE method. but the changes which i am doing they get save imm
-
How to store xml files in oracle as xmltype
public class writexmldb2 public static void main(String args[]) throws SQLException, FileNotFoundException DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection("jd
-
Version: 12c I've set the Target Load Order to: T1,T2,T3 But it always generates the jobs as: Load T3 - IKM Oracle Merge Load T1_T2 - Unknown KM (this is actually IKM Oracle Multi-Insert.GLOBAL) Please help!!!