Define userdefined types in package spec
perfectly working userdefined in one schema when brought in to package spec of another schema give me an error:
Error(26,6): PLS-00540: object not supported in this context.
I am looking for some rules to follow when decalring types in a package specifications.
Thank you
See following section of PL/SQL User's Guide and Reference http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/10_objs.htm#4139
that says:
Currently, you cannot define object types in a PL/SQL block, subprogram, or package
The list of types that can be created in a package specification seems to be:
- subtype: http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/03_types.htm#3359
- collections: http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/05_colls.htm#19661
- record:
http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/05_colls.htm#7543
- ref cursor:
http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/06_ora.htm#1554
Not sure that this is the full list because I did not find a complete list in one PL/SQL document.
Message was edited by:
Pierre Forstmann
Similar Messages
-
User defined record types in package header
hi. is there a way in sql developer to view just the record type names? for example, i have:
TYPE my_rec_type_1 IS RECORD(...);
TYPE my_rec_type_2 IS RECORD(...);
TYPE my_rec_type_3 IS RECORD(...);
and all i want to see is a list showing my_rec_type_1, my_rec_type_2, and my_rec_type_3 without all the inner details of the user defined record. I'm looking for something like in Eclipse, where you see all the method names in a class without all the gory details of each method's implementation.
thanksNo.
Run a query on user_source for your object, order by line, and look at how it is stored. -
Report cannot access pl/sql table variable defined in Package Spec.
Hi,
I've created a package spec called pkg_report with a PL/SQL table variable defined called body_text_table. When I tried to compile the following code under the Before Report trigger:
:desc := pkg_report.body_text_table(1);
Oracle gave me the following error:
Implementation Restriction: 'PKG_REPORT.BODY_TEXT_TABLE': Cannot directly access remote package variable or cursor.
Does anyone have any idea about this error? Thank you for your time at looking at it.
Regards,
JohnYou cannot directly access the package variable in a database package. The work around is to create a set_variable and get_variable wrapper function in the package body. See Metalink note 105838.1 for more info.
A simple example:
create or replace package my_package as
my_var number;
function get_variable return number ;
procedure set_variable (p_value in number) ;
end ;
create or replace package body my_package as
function get_variable return number is
begin
return my_var;
end ;
procedure set_variable(p_value in number) is
begin
my_var := p_value ;
end ;
end; -
Dose oracle.sql.ArrayDescriptor support the user defined type in package?
Hi folks:
I get a obstacle in calling stored procedure by using JDBC driver (ojdbc14.jar).
I have the following code:
create or replace package xxx AS
type var_table is table of varchar2(50);
procedure(parameter in var_table);
end xxx;
When I use the jdbc driver try to create a type for
oracle.sql.ArrayDescriptor arrayDes = oracle.sql.ArrayDescriptor.createDescriptor( "var_table ",connection);
The SQLException is thrown out like those:
Invalid name pattern:user_schema. var_table
So, my question is : Dose oracle.sql.ArrayDescriptor not support the user defined type in package? And I also tried to define such type by using sql "create xxxx" outside of package, then there is no SQLException.
Hopefully for your response and suggestion.Thanks...To my knowledge, the Oracle JDBC driver does not support using the ArrayDescriptor for array data types (varray or nested table) that are defined inside of a package. The same is true for StructDescriptor as well. If you want to use array and object data types, you must define them outside of a package. Then you'll be able to use the descriptors in your JDBC programs.
-
When I am copying packaging spec, the fields 'Category', 'Sub-Category' & 'Group' are getting copied over, however the fields under 'Available UOM', 'UOM Conversions' and Cross Reference' are not getting copied, whether I choose to keep the copied Spec linked to the Template or not. [Both the Spec copied from and the Template used has those UOM/Cross reference fields defined] . Aren't those UOM/Cross reference fields suppose to be copied over to the new Spec? When I create a new Spec from Template, system brings over all fields [UOM/Cross reference etc.] from Template, so I was expecting the same behavior while copying too, since I am linking to the Template during the copying process. Can someone shed some light on this issue please?
I believe that the functional use cases are different. When you are copying from a Template, you are not copying a real existing specification - rather, you are creating a spec with values that should be there by default. These values from a template are typically not meant to be specific to one single specification, but rather to a grouping/classification of specs. Perhaps a Beverage type specification, created from a Beverage template, would have certain Available UOMs that a Sauce specification would not. Cross References on a template may be used for pack size purposes, which may also be specific to a template.
When you copy an existing specification, the assumption is that the specification is linked to some external system(s) using the cross references - if those were copied over, you could have an possible discrepancy. Also, since you are doing a copy and not a new revision, we assumed the UOM info would be different so is is cleared out. -
Issue with xsd Data type mapping for collection of user defined data type
Hi,
I am facing a issue with wsdl for xsd mapping for collection of user defined data type.
Here is the code snippet.
sample.java
@WebMethod
public QueryPageOutput AccountQue(QueryPageInput qpInput)
public class QueryPageInput implements Serializable, Cloneable
protected Account_IO fMessage = null;
public class QueryPageOutput implements Serializable, Cloneable
protected Account_IO fMessage = null;
public class Account_IO implements Serializable, Cloneable {
protected ArrayList <AccountIC> fintObjInst = null;
public ArrayList<AccountIC>getfintObjInst()
return (ArrayList<AccountIC>)fintObjInst.clone();
public void setfintObjInst(AccountIC val)
fintObjInst = new ArrayList<AccountIC>();
fintObjInst.add(val);
Public class AccountIC
protected String Name;
protected String Desc;
public String getName()
return Name;
public void setName(String name)
Name = name;
For the sample.java code, the wsdl generated is as below:
<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions
name="SimpleService"
targetNamespace="http://example.org"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://example.org"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
>
<wsdl:types>
<xs:schema version="1.0" targetNamespace="http://examples.org" xmlns:ns1="http://example.org/types"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://example.org/types"/>
<xs:element name="AccountWSService" type="ns1:accountEMRIO"/>
</xs:schema>
<xs:schema version="1.0" targetNamespace="http://example.org/types" xmlns:ns1="http://examples.org"
xmlns:tns="http://example.org/types" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://examples.org"/>
<xs:complexType name="queryPageOutput">
<xs:sequence>
<xs:element name="fSiebelMessage" type="tns:accountEMRIO" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="accountEMRIO">
<xs:sequence>
<xs:element name="fIntObjectFormat" type="xs:string" minOccurs="0"/>
<xs:element name="fMessageType" type="xs:string" minOccurs="0"/>
<xs:element name="fMessageId" type="xs:string" minOccurs="0"/>
<xs:element name="fIntObjectName" type="xs:string" minOccurs="0"/>
<xs:element name="fOutputIntObjectName" type="xs:string" minOccurs="0"/>
<xs:element name="fintObjInst" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="queryPageInput">
<xs:sequence>
<xs:element name="fPageSize" type="xs:string" minOccurs="0"/>
<xs:element name="fSiebelMessage" type="tns:accountEMRIO" minOccurs="0"/>
<xs:element name="fStartRowNum" type="xs:string" minOccurs="0"/>
<xs:element name="fViewMode" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.org"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://example.org" xmlns:ns1="http://example.org/types">
<import namespace="http://example.org/types"/>
<xsd:complexType name="AccountQue">
<xsd:sequence>
<xsd:element name="arg0" type="ns1:queryPageInput"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="AccountQue" type="tns:AccountQue"/>
<xsd:complexType name="AccountQueResponse">
<xsd:sequence>
<xsd:element name="return" type="ns1:queryPageOutput"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="AccountQueResponse" type="tns:AccountQueResponse"/>
</schema>
</wsdl:types>
<wsdl:message name="AccountQueInput">
<wsdl:part name="parameters" element="tns:AccountQue"/>
</wsdl:message>
<wsdl:message name="AccountQueOutput">
<wsdl:part name="parameters" element="tns:AccountQueResponse"/>
</wsdl:message>
<wsdl:portType name="SimpleService">
<wsdl:operation name="AccountQue">
<wsdl:input message="tns:AccountQueInput" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"
ns1:Action=""/>
<wsdl:output message="tns:AccountQueOutput" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"
ns1:Action=""/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SimpleServiceSoapHttp" type="tns:SimpleService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="AccountQue">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SimpleService">
<wsdl:port name="SimpleServicePort" binding="tns:SimpleServiceSoapHttp">
<soap:address location="http://localhost:7101/WS-Project1-context-root/SimpleServicePort"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
In the above wsdl the collection of fintObjInst if of type xs:anytype. From the wsdl, I do not see the xsd mapping for AccountIC which includes Name and Desc. Due to which, when invoking the web service from a different client like c#(by creating proxy business service), I am unable to set the parameters for AccountIC. I am using JAX-WS stack and WLS 10.3. I have already looked at blog http://weblogs.java.net/blog/kohlert/archive/2006/10/jaxws_and_type.html but unable to solve this issue. However, at run time using a tool like SoapUI, when this wsdl is imported, I am able to see all the params related to AccountIC class.
Can some one help me with this.
Thanks,
Sudha.Did you try adding the the XmlSeeAlso annotation to the webservice
@XmlSeeAlso({<package.name>.AccountIC.class})
This will add the schema for the data type (AccountIC) to the WSDL.
Hope this helps.
-Ajay -
Urgent:Material Type for Packaging Material in WM and MM
Hi
There is a place in SPRO where i can define the material type for packaging.
Logistics - General -> Handling Unit Management -> Basics -> Define Packaging Material Types
How can i create a material using this material type? What is the use of material type here?
Whenever i create material in MM01/MM41, i get the standard material type list.
Thanks & REgards
KapilHi,
In T.code: OMS2, you can get standard material type list.VERP is the standard material type for packing material.You can copy VERP and rename to ur material type( as it is ur business requriement or else u can use same VERP)
What is the use of material type here?
With the help of ur Material Type , u can craete material like The material type,will be used while defining the material
master.At that time,in Tcode:MM01,first screen we need to
mention,(material type)it show the nature of material
ex:-engineering product,finished products,semifinished
product,etc.,
It also play vital role on material numbering,material type in comination with plant & valuation class, play vital role in inventory & accoputning.
To Create Material,use t. Code: MM01,
Step-1
Enter Material Code: ( example-Polythene Bag, If External Number Range or leave it blnak)
Enter Industry Sector: ...................
Enter Material Type: ..........................(VERP- Packing)
Step-2
Select
Views you required( like eample:basic data-1, like basic data-2,purachsing, purchase order text,General plant data, accounting-1, accounting-2 etc)
Step-3
Enter Plant,
Enter Storage location
{{{Enter Sales organization & Distribution channel(if sales view selected)}}}
Step-4
You will have views like (example-1, basic data, enter Base unit of measure, material group and other details as required field,example-2,Accounting data, enter valuation class, price control; S or V & price)
Step-5
Save.
Note: Before creation material you must know which Industry Sector, Material Type ur going to use and material numbering is internal or external.
For more, check the following link for creation of material
http://www.synactive.com/docu_e/doc_multi_mm01.html
Regards,
Biju K -
Schema name not present on filename for "Save Package Spec and Body"
In versions previous to 3.0 EA, the filename defaulted to schema.object.sql when using the "Save Package Spec and Body" on the right click of the package/body. This appears to have disappeared. Also, it now defaults to the .PLS ext/type, which I prefer to save them as .SQL (which i can override, but it would be nice in the file type dropdown). Also, I had posted a suggestion about the actual file not including the schema name prefixing the object name when using the "Save Package Spec and Body". i.e. it does create or replace package reader_package instead of what it should be doing which is create or replace package schema.reader_package
Would be nice indeed having the real name as default, and all supported PL/SQL types (as in the preferences) in the extensions dropdown.
As for the schema name inside, I reckon that would do damage for more users than it would do good for others. But a preference would be best of course.
K. -
User defined table type output not coming
hi all,
i have a userdefined type delcared as:
create or replace TYPE SAMPLE_SEARCH AS OBJECT (
-- LIST OF VARIABLE NAMES AND RESPECTIVE DATA TYPE
i have a user defined table type defined as:
create or replace TYPE SAMPLE_SEARCH_TABLE IS TABLE OF SAMPLE_SEARCH;
I have a stored proc which has an output paramter of type SAMPLE_sEARCH_TABLE.
that is,
sp_sample_proc(sample_search_tb OUT SAMPLE_SEARCH_TABLE);
When i invoke the above stored proc from an anonymous pl/sql block , how can i display the contents of the output parameter using dbms_Output statements?Try this.........This is just a sample code.
CREATE OR REPLACE TYPE address1 AS OBJECT
(country VARCHAR2(1000),
city VARCHAR2(1000),
zip NUMBER,
add1 VARCHAR2(4000),
add2 VARCHAR2(4000));
CREATE OR REPLACE TYPE t_addObj IS TABLE OF address1;
CREATE OR REPLACE PROCEDURE Sp_Address_Obj(Out_Add_Obj OUT t_Addobj) IS
v_Addobj t_Addobj := t_Addobj();
BEGIN
SELECT Address1(u.Object_Name,
u.Object_Type,
u.Object_Id,
'Add01' || Rownum,
'Add02' || Rownum) BULK COLLECT
INTO v_Addobj
FROM User_Objects u;
Out_Add_Obj := v_Addobj;
END Sp_Address_Obj;
DECLARE
v_Addobj t_Addobj := t_Addobj();
BEGIN
Sp_Address_Obj(v_Addobj);
Dbms_Output.Put_Line(v_Addobj(1).City);
FOR i IN 1 .. v_Addobj.Count LOOP
Dbms_Output.Put_Line(v_Addobj(i).Country || '-' ||
v_Addobj(i).City || '-' ||
v_Addobj(i).Zip || '-' ||
v_Addobj(i).Add1 || '-' ||
v_Addobj(i).Add2);
END LOOP;
END; -
Problem with "Package Spec" please help.
Hello once again.
I'm developing a master-detail form, so I'm using a "Package Spec" variable to hold the primary key value from the master form. The primary key value for the master is generated by a sequence.
Here's the package spec:
PACKAGE primary_keygen IS
pkey varchar2(15);
END;Now the master table has the following "Before Insert" Trigger .
CREATE OR REPLACE TRIGGER MASTER_NUM_GEN
BEFORE INSERT
ON MASTER
FOR EACH ROW
DECLARE
primary_key_value varchar2(15);
BEGIN
select lpad(to_char(ref_gen.nextval), 4,'0')
into primary_key_value from dual;
primary_keygen.pkey:='ABC/'||primary_key_value;
:new.Ref_Number:=primary_keygen.pkey;
END;For the detail block. I have the following "Before Insert Trigger" to generate the primary key values.
CREATE OR REPLACE TRIGGER DET1_NUM_GEN
BEFORE INSERT
ON DETAIL1
FOR EACH ROW
BEGIN
if :new.M_ref_number is NULL THEN
:new.M_ref_number:=primary_keygen.pkey;
ENd if;
END;Works quite fine if I have only one detail block. But if I have multiple detail blocks. Depending on the user's selection. i.e. After entering data into the master block, the user selects a detail block ('Letter type'- using stacked canvases for this purpose and radio buttons for selecting the view) and then Inserts data into it. here's what I do in the Detail block2.
CREATE OR REPLACE TRIGGER OREF_NUM_GEN
BEFORE INSERT
ON DETAIL2
FOR EACH ROW
BEGIN
if :new.O_ref_number is NULL THEN
:new.O_ref_number:=pkey_gen.master_key;
ENd if;
END;Now the problem is that When I enter one record into detail1, works fine, but for the second time, when I try to insert another record. the master table gets a new reference number (primary key value) while the detail block gets the previous value that was used in the first record!, so that means 'pkey_gen.master_key' is holding the old value, while in my opinion it should hold the new value, I dont know whats wrong here. If I try to insert two consecutive records into the same detail table, I get an error saying "Unique Constraint voilated", becuase the variable is holding the old values.
And lastly after it inserts the record into the database, I get a dialog box saying, "successfuly inserted 2 records into the database" and when I click ok, the Form closes by itself, any ideas on how to stop this?
I'm really stuck here. Please help me out on this.
Thanks.
Note: I'm using Form6i with Database 10g.
Message was edited by:
fahimkhan82Hi,
Maybe the best way to start is to try building a new form from scratch. For simplicity I will assume that you have one master and one detail table. Master table has a primary key and the detail table has a foreign key to the master. Based on this, with the forms you can create a database block based on your master table. Use the wizard. Again using the wizard, create a second block based on the detail table. You'll see a screen to prompt to create a relationship. Create one by selecting the master table and the right foreign key relation. Now take a close look to all triggers automatically created by the form. Also check the "Relations" object found in you master block object tree. Note that the foreight key column in the detail table has the "Copy Value From Item" property set to monitor the master block's primary key.
This is the basic. You don't need the database triggers, except (in case you want to insert through, say, SLQPlus) the one for the master table, which will look like this:
CREATE OR REPLACE TRIGGER MASTER_NUM_GEN
BEFORE INSERT
ON MASTER
FOR EACH ROW
BEGIN
IF :new.ref_number IS NULL THEN
select 'ABC/'||pad(to_char(ref_gen.nextval), 4,'0')
into :new.ref_number
from dual;
END IF;
END;
Now you have to take care about the inserts in your form. Create PRE-INSERT trigger on the master block.
IF :master.ref_number IS NULL THEN
SELECT 'ABC/'||pad(to_char(ref_gen.NEXTVAL), 4,'0')
INTO :master.ref_number
FROM dual;
END IF;
Run the form and explore different situations to see how the form is keeping the data integrity.
Compile with Shift+K (incremental). Sometimes forms blow just because not all of the trigers were compiled properly.
Hope this helps... -
Split a PL/SQL Package Spec and Body
I hope this was not discussed in some other thread somewhere (haven't found it), but my problem is:
How to split the Package Spec and Package Body in JDeveloper if you want to have both (for database deployment) as files in e.g. a subversion repository?
The problem arises if you have a couple of packages that are dependent on each other, so that you have to deploy the specs first to have the "public" part in place and afterwards the bodies to define the package functions/procedures.
Is there a way to do this?
TIA.
--Ciao, FD.If you want to store for example the package "mypackage" source code in a subversion repository
one possibility is to define 2 svn files:
- mypackage.pks (which contains the package "specification") and
- mypackage.pkb ( package "body").
I haven't tried this from JDev 11.2 but it works for example when using a single-user
svn repository from Sql Developer 2.1.1. ( in SQL Dev if you specify a database
connection you can compile the file based pakage specification and after then the
package body ...)
Regards
user_alex -
Can we declare a Cursor in Package Specs?
Dear buddies
Can I Declare a Cursor in Package Specs so that I can call that cursor and use its data in some procedures and functions of package. Otherwise I've to write that cursor for every sub-program of a package which I don't feel a smart way to accomplish the job.Hi,
here is a short example with the whole way down. Maybe the concept is getting clearer with this:
first of all, if you do not have the table emp, here the DDL for this example.
Be carefull, works only for german clients because of the names of months, sorry for that.
CREATE TABLE EMP
(EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7, 2),
COMM NUMBER(7, 2),
DEPTNO NUMBER(2));
set echo on
INSERT INTO EMP VALUES
(7369, 'SMITH', 'CLERK', 7902,
TO_DATE('17-DEZ-1980', 'DD-MON-YYYY'), 800, NULL, 20);
INSERT INTO EMP VALUES
(7499, 'ALLEN', 'SALESMAN', 7698,
TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600, 300, 30);
INSERT INTO EMP VALUES
(7521, 'WARD', 'SALESMAN', 7698,
TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250, 500, 30);
INSERT INTO EMP VALUES
(7566, 'JONES', 'MANAGER', 7839,
TO_DATE('2-APR-1981', 'DD-MON-YYYY'), 2975, NULL, 20);
INSERT INTO EMP VALUES
(7654, 'MARTIN', 'SALESMAN', 7698,
TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);
INSERT INTO EMP VALUES
(7698, 'BLAKE', 'MANAGER', 7839,
TO_DATE('1-MAI-1981', 'DD-MON-YYYY'), 2850, NULL, 30);
INSERT INTO EMP VALUES
(7782, 'CLARK', 'MANAGER', 7839,
TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10);
INSERT INTO EMP VALUES
(7788, 'SCOTT', 'ANALYST', 7566,
TO_DATE('09-DEZ-1982', 'DD-MON-YYYY'), 3000, NULL, 20);
INSERT INTO EMP VALUES
(7839, 'KING', 'PRESIDENT', NULL,
TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);
INSERT INTO EMP VALUES
(7844, 'TURNER', 'SALESMAN', 7698,
TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500, 0, 30);
INSERT INTO EMP VALUES
(7876, 'ADAMS', 'CLERK', 7788,
TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);
INSERT INTO EMP VALUES
(7900, 'JAMES', 'CLERK', 7698,
TO_DATE('3-DEZ-1981', 'DD-MON-YYYY'), 950, NULL, 30);
INSERT INTO EMP VALUES
(7902, 'FORD', 'ANALYST', 7566,
TO_DATE('3-DEZ-1981', 'DD-MON-YYYY'), 3000, NULL, 20);
INSERT INTO EMP VALUES
(7934, 'MILLER', 'CLERK', 7782,
TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);2. Package Spec:
create or replace
package test_cursor as
--Type for the returncode of the function
TYPE typ_emp IS TABLE OF emp%rowtype;
--Array for fetching, of course also possible in the body
t_emp typ_emp;
--function wich returns the array from fetching the cursor
function get_emp return typ_emp;
--function for manupilation data retrieved by the function
PROCEDURE man_emp;
end test_cursor;3. Package Body
create or replace
package body test_cursor as
FUNCTION get_emp RETURN typ_emp AS
cursor c_emp is select * from emp;
BEGIN
open c_emp;
fetch c_emp BULK COLLECT INTO t_emp;
CLOSE c_emp;
--t_emp returns the whole table set from emp
return t_emp;
end get_emp;
PROCEDURE man_emp AS
--just for not confusing names, is the same as t_emp of course
v_emp_array typ_emp;
BEGIN
--call the function and retrieve the whole data set
v_emp_array := get_emp;
--now manipulate the data, in this case just write the names to the calling client
FOR rec IN v_emp_array.FIRST .. v_emp_array.LAST
loop
dbms_output.put_line(v_emp_array(rec).ename);
end loop;
end man_emp;
end test_cursor;4. Calling the procedure
SET serveroutput ON
exec test_cursor.man_emp;5. And this is the result:
anonymer Block abgeschlossen
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLERPlease be aware, this is just for demonstration purpose, of course it makes no sense to display the names this way. But how to call a funktion returning arrays with datasets from fetching cursors is shown here.
Hth
Joerg -
How to call user define data type as data type for concurrent parameter
Hi All,
i find some difficulty while creating the concurrent program.
i.e.
i have one of the parameter of table type i.e. user define data type at PLSql program
now i need to register same PLSQL program into oracle applications as concurrent program
but while i am creating Parameters for concurrent program
How could i define that user define data type at database level in oracle applications using 'Value set' ?
any one save me from this Problem
thanks and Regards,
sai krishna@cavaya.Don't think this can be done..
One way I can think of is to wrap your PL/SQL program under another procedure/package that can accept "normal" parameter,and use/register this wrapper instead of your original pl/sql program.
HTH -
EA2 - Export Wizard - No forward slash after package spec and body in sql
I exported a schema with the export wizard. My stand alone functions and sql types in the script have have a forward slash after the "end;" statement Great. However, package specs and body create statements do not have a forward slash after the "end;" and I believe they also should have this.
This appears to be a DB issue as we are just using DBMS_METADATA to generate the ddl. Please test manually using worksheet or sqlplus
exec DBMS_METADATA.SET_TRANSFORM_PARAM( DBMS_METADATA.SESSION_TRANSFORM, 'SQLTERMINATOR' , TRUE );
select dbms_metadata.get_ddl('PACKAGE', 'PACKAGE_NAME','SCHEMA') from dual;
I looked through the DB bugs briefly and noticed a few on other objects that were fixed in 9.2.0.6 but I didn't see one for Packages...
This is not something I would fix in SQL Developer as the core issue is with DBMS_MEATADATA and your version of the DB.
As this is fixed in 10 I'm sure you can work with support and request a backport if it's not a currently available patch. -
Reg: Package Spec and Body
All,
I am adding a function to an existing package. I have added the function code only in the package body and compiled. I have received the below error.
PLS-00313: 'Fun_check' not declared in this scope
Where as, I have declared the same function in the package specification, then no issues.
So, my question is, Can't we add the function/procedure without the declaration of it inside the package specification.Because,I see, there were many functions inside the same package body, which were not declared in the package specification. What will happen, if we declare the function/proc inside the package spec and what if not.
Thanks in advance.
Thanks,EV259 wrote:
PLS-00313: 'Fun_check' not declared in this scope
For this error need to define the local programs before these being called by another program in package body.
Check below example for giving proper scope to local program in package body.
create or replace package p1
as
procedure p1;
function f1 return number;
end p1;
create or replace package body p1
as
procedure p1
is
var number;
begin
null;
var := f_l; -- first:- calling local f_l before defining will throw error
end;
function f_l --second:- defining local f_l
return number
is
begin
null;
return 2;
end;
function f1
return number
is
begin
null;
return 1;
end;
end p1;
Warning: Package Body created with compilation errors.
SQL> show err
Errors for PACKAGE BODY P1:
LINE/COL ERROR
8/3 PL/SQL: Statement ignored
8/10 PLS-00313: 'F_L' not declared in this scope
------ Now Creating scope for local function f_l through out pkg body by defining it first!
create or replace package body p1
as
------- can be called in any program below it
function f_l
return number
is
begin
null;
return 2;
end;
procedure p1
is
var number;
begin
null;
var := f_l;
end;
function f1
return number
is
begin
null;
return 1;
end;
end p1;
Package body created.
Maybe you are looking for
-
I updated the software on my iPod touch and it did not sync properly eliminating all the music and photos from my iPod. When syncing again this morning, it wouldn't sync. Any suggestions?
-
How to find out insertion time of records in an oracle table
Hi everybody, I have a table with about 50,000 records in my Oracle database and there is a date column which shows the date that each record get inserted to the table, for example 04-Aug-13. Is there any way that I can find out what time each record
-
How to create a bordeless and titleless dialog or frame?
Hi people, I am trying to do a simple start up screen for my application. I have done the graphics for the startup screen and save as filename.gif. I am looking for a container or a way to paint my the gif so that it looks like a startup screen. I ha
-
I loaded "google search" on my ipad 2 frm the app store 2nite & can not find the icon....if there is not an icon - how can i delete it from my ipad? Thx
-
Can't install Epson stylus 230 with Mountain Lion.
Everytime I go to install the software from the website, I'm being prompted that I'm not the Admin and to log in as such. Well I am the Admin. Contacted Epson support and they said its the OS. I've restarted and redownloaded the software several ti