Capturing packages with type declarations
I have a lot of packages written in ddl files and want capture them with Designer 9i. However it seems not possible because type declarations are put not as Datastructures but as text in Package Specification field and therefore are generated after procedure declarations in package specification. Is there some methods to capture packages correctly?
Hi,
Can you send me an example of your problem so I can investigate it further?
Rgds
Susan
Designer Product Management
Similar Messages
-
Compile error at call Package with type parameter
Hello!
I have a problem.
I have a package PKG_ARRAY_PARAMETER. This package has a procedure with an array parameter.
PACKAGE PKG_ARRAY_PARAMETER IS
-- Define Record and Record-Table (array)
TYPE my_rec is record
( v_column1 VARCHAR2(5));
--Array from my_rec
TYPE my_rec_table is table of my_rec
INDEX BY BINARY_INTEGER;
v_rectable my_rec_table;
PROCEDURE my_array_proc(p_array my_rec_table);
END;
PACKAGE BODY PKG_ARRAY_PARAMETER AS
PROCEDURE my_array_proc (p_array my_rec_table)IS
v_index BINARY_INTEGER;
v_count number;
BEGIN
v_count := 1;
END;
END;
The package compiled without errors.
The problem ist the call of the package procedure.
DECLARE
-- Define Record and Record-Table (array)
TYPE my_rec is record
( v_column1 VARCHAR2(5));
--Array from my_rec
TYPE my_rec_table is table of my_rec
INDEX BY BINARY_INTEGER;
v_rectable my_rec_table;
BEGIN
v_rectable(1).v_column1:='aaa';
PKG_ARRAY_PARAMETER.my_array_proc(v_rectable);
--null;
END;
I get the error "Error 306.... wrong number or types of arguments in call to 'MY_ARRAY_PROC'"
Can anybody help me. I have no idea wh I get this error.
ThanksAs you have discovered, even if the definitions are identical Oracle treats them as different objects. I recommend "Oracle PL/SQL Programming" by Steven Feuerstein which has a couple of chapters on collections and specifically warns against this.
I have that section bookmarked as I can never remember how to manipulate collections. -
Creating PL/SQL Package with all the types
CREATE OR REPLACE
TYPE rec_type AS OBJECT (
first_name VARCHAR2(20),
last_name VARCHAR2(20)
CREATE OR REPLACE
TYPE REC_TYPE_TAB AS TABLE OF rec_type
I am able to create the above types in oracle and used in PL/SQL packages. And like this I have somany types. I would like to if I can create a package with the types to make the life easier. Could you please tell me how to do it.
your help is greately appreciated..
--Krishsb92075 wrote:
TYPE add only aggravation, complexity, & should be avoidedI disagree.
When used correctly types can be the simplest solution.
For example when passing multiple values to a stored procedure. Avoiding the type in the below example would lead to further complexity and aggravation not lessen it.
SQL> create or replace procedure p
2 (
3 p_object_list in sys.odcivarchar2list,
4 p_result out sys_refcursor
5 ) as
6 begin
7 open p_result for
8 select owner, object_name, object_type
9 from all_objects
10 where object_name in
11 (
12 select column_value from
13 table(p_object_list)
14 )
15 order by
16 owner, object_name, object_type;
17 end;
18 /
Procedure created.
SQL> exec p(sys.odcivarchar2list('DUAL','ALL_OBJECTS'),:c)
PL/SQL procedure successfully completed.
SQL> print c
OWNER OBJECT_NAME OBJECT_TYPE
PUBLIC ALL_OBJECTS SYNONYM
PUBLIC DUAL SYNONYM
SYS ALL_OBJECTS VIEW
SYS DUAL TABLE -
How to use %Type declaration with table residing in a different database
How can I use the %TYPE declaration if the table is from a different database.
E.g
v_business_unit ps_jrnl.header.business_unit%TYPE;
In the above declaration statement,the table 'ps_jrnl_header' resides in a different database(Database A) from the one I am currently in( Database B).(This is because data needs to be extracted from Database A into Database B).1. Create a database link to the other database (this probably already exists since your proc is interacting with that database)
2. Create a synonym for the table in the other database
create synonym foo for ps_jrnl.header@database_a;3. Reference the synonym in your variable declaration:
v_business_unit foo.business_unit%TYPE; -
OWB Can't Import Existing Package with Collection Data Type as Arguments
I created a package and compiled it successfully as the follows:
+++++++++++++++++++++++++++++
CREATE OR REPLACE PACKAGE PACKAGE_TEST AS
TYPE Num_LIST IS TABLE of NUMBER INDEX BY BINARY_INTEGER;
FUNCTION TEST_FUNCTION1 ( arg1 NUMBER, arg2 NUMBER) RETURN NUMBER;
FUNCTION TEST_FUNCTION2 ( args NUM_LIST) RETURN NUMBER;
END PACKAGE_TEST;
CREATE OR REPLACE PACKAGE BODY PACKAGE_TEST AS
FUNCTION TEST_FUNCTION1 ( arg1 NUMBER, arg2 NUMBER) RETURN NUMBER IS
ln_sum NUMBER;
BEGIN
ln_sum := arg1 + arg2;
RETURN ln_sum;
EXCEPTION
WHEN OTHERS THEN
RETURN -10000;
END TEST_FUNCTION1;
FUNCTION TEST_FUNCTION2 ( args NUM_LIST) RETURN NUMBER IS
ln_sum NUMBER;
BEGIN
ln_sum :=0;
FOR i IN 1.. args.COUNT LOOP
ln_sum := ln_sum + args( i );
END LOOP;
RETURN ln_sum;
EXCEPTION
WHEN OTHERS THEN
RETURN -10000;
END TEST_FUNCTION2;
END PACKAGE_TEST;
++++++++++++++++++++++++++++++++++++++++
Then I tried to import the package into OWB (9.2). The problem came: all the package body and
the specification of TEST_FUNCTION1 were imported, but the package specification of
TEST_FUNCTION2 couldn't be imported. The IMPORT FILTER gave an error message:
"TEST_FUNCTION2: Argument Data type is not supported".
How to resolve this problem? It is very import for our project, since we have to import some
packages with user_defined collection data types as arguments.
Thank you.
LushuHi Lushu,
Unfortunately this is indeed not supported and I would not know how to work around this one. The only way I guess that this would work is to not import it, and then use Expressions to call the function with inputs.
Jean-Pierre -
Problem with Packaging Material Type
Hello all Gurus,
I have a problem with a packaging material type that I have created copying the standrad Packaging material type LEIH. I created a new packing material type ZPAC - Packaging Material copying LEIH.
I then created a new material master record using this new material type ZPAC.
When I am using this material for packing in outbound delivery document - VL01N, I am getting the following strange error message:
20333 does not have packaging material type and is therefore not a pack.mat.
Please suggest me why this error is coming and how I can rectify this error. Is there any further configuration that I need to do for packaging material types??? Kindly suggest.
Thanks and Regards,
Umakanth.Hi,
Material type is not enough, you have to maintain proper master data as well as config.
At least please maintain value in MARA-VHART for the packaging material. Please also check these links how HUM works:
http://www.sap-img.com/sap-hu.htm
http://help.sap.com/saphelp_crm40/helpdata/en/c8/a44b779f3211d2858d0000e81ddea0/frameset.htm
Regards,
Csaba -
Hi There,
We have recently downloaded SDK 4 and had configured the same for
developement in flex builder 3, we are already using SDK 3.0. However
to our surprise there were compile time error reported for mx.chart
related classes. To resolve this we thought to import relevant .swc
like datavisualization, automation from sdk 3.0, and it worked and
resolved compile time error. But we landed up in on more problem that
is 'Declaration of style 'direction' conflicts with previous
declaration in E:\Softwares\FlexBuilder\sdks\SDK 4\frameworks\libs
\datavisualization.swc(mx/charts/GridLines)'.
If you could pleas help us to resolve these issues and also if you
could answer these queries would be good
1) SDK 4 has been declared to be open source, then why mx.chart
package is not part of it?
2) Why would 'Declaration of style 'direction' conflicts with previous
declaration' occur?
3) What are the other component and packages that are not part of open
source for which license is still required?
Waiting for reponse in anticipation.
Thanks,I got this same error with the following setup.
1. Building a SWC with Flex 4.0 Beta2 on FlashBuilder4
2. SWC references other SWC that are built with Flex3.
3. Define a <mx:ColumnChart id="column" ...> in a Flex4 skin.
4. Got this compiler error.
Any idea if this is not supposed to work? I'm hoping I don't need all referenced swcs to be recompiled with Flex4 SDK. Some of those are external dependency that I do not have source code access.
Thanks for any help.
kam -
Create an external HU with different packaging material type
Hi All,
Iu2019m trying to create an external handling unit with the material below:
Packaging material: 2892
Packaging material type: Z501
Material Group: Packaging Materials: Z501
But the system creates de HU with the Packaging material type: 0001 instead Z501.
My question is.. How can I set the material or HU to take the Packaging material type Z501?
Thank you for your comments,
Jaime S.My problem has been solved. Regards
-
Document type declaration for root element type "web-app" must end with ' '
I am attempting to deploy an application (.war file) using the Sun Access Manager Agent installed, (Reference http://docs.sun.com/app/docs/doc/819-3201/6n5eht3k4?a=view -near the bottom) and I get this error:
Error loading deployment descriptors for ajacs Line 3 Column 19 -- The document type declaration for root element type "web-app" must end with '>'.
Here is the relavent code:
<!DOCTYPE web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<web-app>
<filter>
<filter-name>Agent</filter-name>
<filter-class> com.sun.identity.agents.filter.AmAgentFilter </filter-class>
</filter>
<filter-mapping>
<filter-name>Agent</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<display-name>AJACS</display-name>
<welcome-file-list>
<welcome-file>frameSet.jsp</welcome-file>
</welcome-file-list>
etc...
Now, when I remove the parts that http://docs.sun.com/app/docs/doc/819-3201/6n5eht3k4?a=view said to add, it deploys just like it used to deploy- just fine with no errors. However, I add that code and it breaks.
Note: The code was a straight copy/paste, so if there is any error in the code, it is because it's written incorrectly on the Sun doc website.
Any help would be MUCH appreciated. Thanks!Well, if that was pasted on one line, it would be:
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
So it's supposed to be that way. I just tried it with the extra quotes, and no dice... -
Db Adapter: problems by calling a procedure with type as parameter
Hi,
We using a db adapter in a bpel process.
In that dapter we call a procedure with types as in and out parameter
package.procedure(p_in IN in_t, p_rsult OUT result_t).
When we calling the procedure, we don't call the procedure directly.
We call that procedure in a schema who have the execute rigths for the package and the types.
When we run the process we get the error message
unable to convert the xsd element p_in whose user defined type is in_t
cause: java.sql.SQLException: ora-01436 connect by loop in user data
I am not shore if I draw the right conclusions.
Is it rigth that bpel have a problem by using types as parameter when using two schematas? Isn't it a bug.
For every help I was thankful.
Thanks in advanced.
MichaelHi,
thanks for the hint. I have implemented a wrapper package and it's working well.
Only one crux. The parameter of the called procedure are data types and not simple types.
CREATE OR REPLACE TYPE pesa_db_return_t AS OBJECT
(SUCCESS_MSG varchar2(255)
,FAULT_SQLCODE varchar2(255)
,FAULT_SQLMSG varchar2(255)
Wrapper package...
IS
PROCEDURE prc_writeReOinDB (p_AuftragRechnungOnline IN pesa_data.pesa_tivu_reo_t
,p_result OUT pesa_data.pesa_db_return_t)
IS
BEGIN
pkg_pesa_reo.prc_writeReOinDB (p_AuftragRechnungOnline => p_AuftragRechnungOnline
,p_result => p_result
END prc_writeReOinDB;
END pkg_pesa_wrapper;
So I have to declare the parameter with the schema user in front of.
Now, we have deployed thes sources on a second enviroment and get following error:
<2008-04-22 15:01:25,749> <ERROR> <eweber.collaxa.cube.engine.dispatch> <BaseScheduledWorker::process> Failed to handle dispatch message ... exception ORABPEL-05002
Message handle error.
An exception occurred while attempting to process the message "com.collaxa.cube.engine.dispatch.message.instance.CallbackDeliveryMessage"; the exception is: Type class not found.
Cannot find class for type "org.apache.xerces.dom.ElementNSImpl". Please check that the class is located in the classpath.
You have a hint for me what I have to do?
Thanks in advanced,
Michael -
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 -
Package and type declaratrion in 10g
Hi forum,
1) Any difference is threre in ora 10g for declaration of plsql types'
Eg : type temp_x_tab is a table of x%rowtype index by binary integer;
here x is a pre-defined table in schema.
Is thr anything wronmg with this declaration in 10g?
2) Similarly package declration and specification has got any diference in 10g ,compared to previous releases of oracle?
Thanks,
AneeshThe docs are at http://tahiti.oracle.com
-
Correct use of Type declaration?
Hello,
I have a type declaration in a package like so:
type get_rec_type
IS
record
( upl_id table_name.id%TYPE
, doc_id table_name.eff_from%TYPE
);I have refered to this type in my procedure declaration like so:
PROCEDURE bulk_upload_prc
( p_rec OUT get_rec_type
);Is this correct?
The reason I ask is because I am getting the following error.
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'BULK_UPLOAD_PRC'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignoredThank You
Ben
Edited by: Benton on Nov 3, 2010 12:01 PMHi Toon,
I am attempting to run it by doing the following:
EXEC schemName.new_bulk_upload_pkg.bulk_upload_prc;And I am not supplying it any variables, because it should be getting them from the cursor that I have opened.
and here is the cursor
CURSOR c_get_rec_type RETURN get_rec_type;This is the package so far, I hope I am not giving you too much information ...
SPECIFICATION
CREATE OR REPLACE
PACKAGE NEW_BULK_UPLOAD_PKG
AS
-- DECLARE TYPES
type get_fbt_bulk_upload_rec_type
IS
record
( upl_id tableName.upl_id%TYPE
, doc_id tableName.doc_id%TYPE
, atr_id tableName.atr_id%TYPE
, reference tableName.reference%TYPE
, filename tableName.filename%TYPE
, mime_type tableName.mime_type%TYPE
, eff_from tableName.eff_from%TYPE
, eff_to tableName.eff_to%TYPE
, title tableName.title%TYPE
, comments tableName.comments%TYPE
-- DECLARE CURSORS
CURSOR c_get_fbt_bulk_upload_rec_type RETURN get_fbt_bulk_upload_rec_type;
PROCEDURE bulk_upload_prc
( p_rec OUT get_fbt_bulk_upload_rec_type
, p_blob OUT BLOB
, p_srcfile OUT BFILE
, p_max_rec OUT NUMBER
END NEW_BULK_UPLOAD_PKG;BODY
CREATE OR REPLACE
PACKAGE BODY NEW_BULK_UPLOAD_PKG
AS
CURSOR c_get_rec_type
RETURN get_rec_type
IS
SELECT upl_id
, doc_id
, atr_id
, reference
, filename
, mime_type
, eff_from
, eff_to
, title
, comments
FROM schemaName.tableName
WHERE status = 'NOT LOADED';
-- Bulk upload procedure.
PROCEDURE bulk_upload_prc
p_rec OUT get_rec_type ,
p_blob OUT BLOB ,
p_srcfile OUT BFILE ,
p_max_rec OUT NUMBER
IS
BEGIN
LOOP
FETCH c_get_rec_type INTO p_rec;
EXIT WHEN c_get_rec_type%NOTFOUND;
DBMS_LOB.CreateTemporary(p_blob, TRUE);
DBMS_LOB.Open(p_blob, dbms_lob.Lob_ReadWrite);
p_srcfile := Bfilename('UPLOAD_DIR', p_rec.filename);
DBMS_LOB.FileOpen (p_srcfile, dbms_lob.File_ReadOnly);
DBMS_LOB.LoadFromFile(p_blob, p_srcfile, DBMS_LOB.GetLength(p_srcfile));
INSERT
INTO dev_fbt_doc
filename ,
mime_type,
blob_content
VALUES
p_rec.filename ,
p_rec.mime_type,
EMPTY_BLOB()
-- Remark required
UPDATE schemaName.TableNameB
SET blob_content = p_blob
WHERE filename
LIKE p_rec.filename;
-- Get the DOC_ID of the record that was just inserted into TableNameB.
EXECUTE IMMEDIATE 'SELECT MAX(doc_id) FROM schemaName.TableNameB'
INTO p_max_rec;
-- Update the column named STATUS with the text UPLOADED to distinguish it from
-- those records that have not been uploaded (NOT LOADED).
UPDATE schemaName.tableName
SET status = 'UPLOADED'
WHERE upl_id = p_rec.upl_id;
-- Update the column named DOC_ID to record the assigned DOC_ID for the record
-- that was uploaded.
UPDATE schemaName.tableName
SET doc_id = p_max_rec
WHERE upl_id = p_rec.upl_id;
DBMS_LOB.FileClose(p_srcfile);
COMMIT;
END LOOP;
END bulk_upload_prc;
END NEW_BULK_UPLOAD_PKG;Thank You
Ben
Edited by: Benton on Nov 3, 2010 1:24 PM -
Can we use dbms_output.put_line package with forall statement
Hello Everybody
Can we use dbms_output.put_line package with forall or can we use insert,update and delete only
declare
type emp_rec is table of emp%rowtype
index by binary_integer;
t emp_rec;
begin
select * bulk collect into t from emp;
forall i in t.first..t.last
dbms_output.put_line(t(i).name);
end;Thanks & Regards
peeyush
Edited by: Peeyush on Nov 25, 2010 11:45 PMMichaelS wrote:
Well as the docs explain (though not very clear and detailed, I admit) you can use a dynamic sql statement (execute immediate) with FORALL.You got me interested in the performance side doing this Michael - running PL/SQL code via a FORALL loop.
It is faster than using a normal FOR loop to execute dynamic PL/SQL - a bit surprising as I expected another context switch to be in there. But seems like the PL/SQL engine is a more clever at optimisation than what I originally credited it with.. ;-)
Of course - pre-compiled/static PL/SQL code in a FOR loop is the fastest, as expected.
SQL> declare
2 type TNumbers is table of number;
3
4 type TTimes is record(
5 for_all number,
6 for_dynamic number,
7 for_static number
8 );
9
10 type TTimesTable is table of TTimes;
11
12 MAX_ITERATIONS constant number := 10;
13
14 plBlock varchar2(1000) :=
15 'declare i number;
16 begin i:= :var / 10; end;';
17
18 performance TTimesTable;
19 t1 number;
20 bindVar TNumbers;
21 n number;
22 begin
23 select
24 level bulk collect into bindVar
25 from dual
26 connect by level <= 10000;
27
28 dbms_output.put_line( 'Iterations: '||bindVar.Count||' for loop cycle(s)' );
29
30 performance := new TTimesTable();
31 performance.Extend( MAX_ITERATIONS );
32
33 for j in 1..MAX_ITERATIONS
34 loop
35 t1 := dbms_utility.get_time;
36 forall i in 1..bindVar.Count
37 execute immediate plBlock using bindVar(i);
38 performance(j).for_all := dbms_utility.get_time-t1;
39
40 t1 := dbms_utility.get_time;
41 for i in 1..bindVar.Count
42 loop
43 execute immediate plBlock using bindVar(i);
44 end loop;
45 performance(j).for_dynamic := dbms_utility.get_time-t1;
46
47 t1 := dbms_utility.get_time;
48 for i in 1..bindVar.Count
49 loop
50 n := bindVar(i) / 10;
51 end loop;
52 performance(j).for_static := dbms_utility.get_time-t1;
53 end loop;
54
55 dbms_output.put_line( 'Times in 100th of a second' );
56 dbms_output.put_line( rpad('for all',15) || rpad('for dynamic',15) || rpad('for static',15) );
57 for i in 1..performance.Count
58 loop
59 dbms_output.put_line(
60 rpad( performance(i).for_all, 15 )||' '||
61 rpad( performance(i).for_dynamic, 15 )||' '||
62 rpad( performance(i).for_static, 15)
63 );
64 end loop;
65
66 end;
67 /
Iterations: 10000 for loop cycle(s)
Times in 100th of a second
for all for dynamic for static
10 72 0
6 37 0
6 37 0
6 37 0
6 36 0
6 37 1
5 37 0
5 37 0
6 37 1
5 37 0
PL/SQL procedure successfully completed.
SQL> -
New 10.6 server machine. (Actually 3 of them.) If we install every update offered in Software Update except safari 5.1.4 and machine is fine. Once the safari update is taken and the machine reboots, Software Update crashes a bit after launch. When running softwareupdate -l on the command line, the error is
Software Update Tool
Copyright 2002-2009 Apple
2012-03-14 14:25:19.763 softwareupdate[1631:4f0b] IFJS_PropertyListConvertToType() called with type=3
Segmentation fault
Anybody else seeing this?The same here on two xserves!
Running SoftwarUpdate from the GUI!
Console says:
Software Update[24700]
Package Authoring: my.result.title and my.result.message not defined or empty
Software Update[24700]
IFJS_PropertyListConvertToType() called with type=3
com.apple.launchd[1]
(com.apple.suhelperd[24702]) Exited with exit code: 2
com.apple.launchd.peruser.501[24141]
([0x0-0x4b04b].com.apple.SoftwareUpdate[24700]) Job appears to have crashed: Segmentation fault
I also get a message like this from ServerAdmin every minute in console:
servermgr_info: unexpected Software Update state: crashed
The crashreport says:
Thread 7 Crashed: Dispatch queue: com.apple.root.default-priority
0 com.apple.JavaScriptCore 0x00007fff8795eff1 JSC::JSObject::defaultValue(JSC::JSObject const*, JSC::ExecState*, JSC::PreferredPrimitiveType) + 3921
1 com.apple.JavaScriptCore 0x00007fff8794fd6a JSC::JSCell::toPrimitive(JSC::ExecState*, JSC::PreferredPrimitiveType) const + 42
2 com.apple.JavaScriptCore 0x00007fff8781f387 cti_op_to_primitive + 55
3 ??? 0x000025f96ea04573 0 + 41753233081715
4 com.apple.JavaScriptCore 0x00007fff877b1462 JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::ScopeChainNode*, JSC::JSObject*) + 2386
5 ??? 0x00000001024ba9e0 0 + 4333480416
If full crashreport is required, I can mail it!
Any ideas to get Softwareupdate running again?
Greetings,
Peter
Maybe you are looking for
-
Can't see printer name in the print dialog box as the printer name is too long
This is actually causing siginificant pain as I am using a tablet and moving around a number of floors/buildings needing to be able to print from where I am. When printing from Acrobat reader, the print dialog box that comes up does not have a horizo
-
How to change search help for standard field in me51n.
hi frnds, I want to change search help option for 'Advice code' field under Additional DFPS tab in me51n. But i dont know how to change or add search help for standard field. so plz help.. best regards, sudip biswas
-
Unable to open the editor in sql plus.
Hi.. Operating System is Windows Vista...oracle database is 10g I'm getting the following error... SP2-0110: Cannot create save file "afiedt.buf" thanks.
-
Revision: 5353 Author: [email protected] Date: 2009-03-17 12:59:06 -0700 (Tue, 17 Mar 2009) Log Message: * Added compiler error for Halo Navigators containing non-Containers as their first level child. tests Passed: checkintests Needs QA: YES Needs D
-
Apple iWorks - Pages/Keynote/Numbers - can I open these in MS Office?
Hi all can someone please be so kind and let me know if there is a possibility to save Pages/Keynote/Numbers documents in a format thatI can open in MS Office and vice versa? Thank-you Magz