How to represent Nested table as variable/Object in OCI
Hi All,
I'm new to OCI.
I've following nested table in my database.
Nested table:
create type type1 as object (name varchar2(20));
create type type2 as table of type1;
create table table1 (col1 varchar2(20), col2 type2) nested table col2 store as table2;
Can anyone help me to present col2 as C structure/typedef so as to use it with OCIDefineObject?
You can have a look at Chapter 11 of the OCI Programmer's Guide. Look at the section Collections in it. You can represent the nested table as OCITable *. Further, you can generate structure representation of your object type by using OTT. Please let us know if this answers your question. In case you are not able to proceed please let us know.
Thanks,
Sumit
Similar Messages
-
How to insert a table with variable rows in smart form
Hi all,
How to insert a table with variable rows in smart form?
Any help would be appreciated.
Regards,
Mahesh.Hi,
Right click the mouse->create->table
If you want 5 columns, you need to declare 5 cells in one line type of the table
Click on Table -> Details, then do the following
Line Type 1 2 3 4 5
L1 2mm 3mm etc
Here specify the width of the columns as many as you want..
then in the header/main area of the table, click create Table Line, Rowtype is L1, automatically 5 cells will come,In each cell create a text element, display the variable to be printed there. -
Inserting into a doubly nested table through an object view
Can anyone give me an example of an INSTEAD OF trigger that will mediate an INSERT into a doubly nested table of an Object View? Is there syntax that will allow it?
Here's some code to demonstrate. Note that relational tables, not an object table, are used to store object instances:
create or replace type TInnerNestedTable
is table of varchar2(20)
create or replace type TOuterNestedTable
is table of TInnerNestedTable
create or replace type TMyObject
is object
id varchar2(20)
, tab TOuterNestedTable
create
table T_MY_OBJECT
id varchar2(20) not null
, primary key (id)
create
table T_MY_OBJECT_TAB_OUTER
id varchar2(20) not null
, outerIndex integer not null
, primary key (id, outerIndex)
, foreign key (id) references T_MY_OBJECT on delete cascade
create
table T_MY_OBJECT_TAB_INNER
id varchar2(20) not null
, outerIndex integer not null
, innerIndex integer not null
, innerValue varchar2(20)
, primary key (id, outerIndex, innerIndex)
, foreign key (id, outerIndex) references T_MY_OBJECT_TAB_OUTER on delete cascade
create or replace view V_MY_OBJECT
of TMyObject
with object identifier (id)
as
select t.id
, cast(multiset(
select cast(multiset(
select i.innerValue
from T_MY_OBJECT_TAB_INNER i
where i.id = o.id
and i.outerIndex = o.outerIndex
) as TInnerNestedTable)
from T_MY_OBJECT_TAB_OUTER o
where o.id = t.id
) as TOuterNestedTable)
from T_MY_OBJECT t
create or replace trigger TR_II_V_MY_OBJECT
instead of insert on V_MY_OBJECT
for each row
begin
insert
into T_MY_OBJECT
id
values (
:new.id
insert
into T_MY_OBJECT_TAB_OUTER
id
, outerIndex
select :new.id
, rownum
from table(:new.tab) o;
insert
into T_MY_OBJECT_TAB_INNER
id
, outerIndex
, innerIndex
, innerValue
select :new.id
, o.outerIndex
, rownum
, value(i)
from (
select :new.id
, rownum outerIndex
, value(o) innerTab
from table(:new.tab) o
) o
, table(o.innerTab) i;
end;
insert
into V_MY_OBJECT
values (
new TMyObject(
'A'
, TOuterNestedTable(
TInnerNestedTable('A','B','C')
, TInnerNestedTable('AA')
, TInnerNestedTable('AB')
insert
into V_MY_OBJECT
values (
new TMyObject(
'B'
, TOuterNestedTable(
TInnerNestedTable('X','Y','Z')
, TInnerNestedTable('Hello', 'World!')
/Selecting from the view shows the results:
select value(o)
from V_MY_OBJECT o
VALUE(O)(ID, TAB)
TMYOBJECT('A', TOUTERNESTEDTABLE(TINNERNESTEDTABLE('A', 'B', 'C'), TINNERNESTEDTABLE('AA'), TINNERNESTEDTABLE('AB')))
TMYOBJECT('B', TOUTERNESTEDTABLE(TINNERNESTEDTABLE('X', 'Y', 'Z'), TINNERNESTEDTABLE('Hello', 'World!')))
2 rows selected.Hope that helps...
Gerard -
How to get nested table meta data
how to get nested table column name, column type and column size
by using java. i need code for this.
please help me.The Follopwing program does display the the details of table. Hope you get the solution
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
Connection conn = getOracleConnection();
System.out.println("Got Connection.");
Statement st = conn.createStatement();
st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM SCHEDULE_SET");
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
System.out.println("resultSet MetaData column Count=" + numberOfColumns);
for (int i = 1; i <= numberOfColumns; i++) {
System.out.println("column MetaData ");
System.out.println("column number " + i);
// indicates the designated column's normal maximum width in
// characters
System.out.println(rsMetaData.getColumnDisplaySize(i));
// gets the designated column's suggested title
// for use in printouts and displays.
System.out.println(rsMetaData.getColumnLabel(i));
// get the designated column's name.
System.out.println(rsMetaData.getColumnName(i));
// get the designated column's SQL type.
System.out.println(rsMetaData.getColumnType(i));
// get the designated column's SQL type name.
System.out.println(rsMetaData.getColumnTypeName(i));
// get the designated column's class name.
System.out.println(rsMetaData.getColumnClassName(i));
// get the designated column's table name.
System.out.println(rsMetaData.getTableName(i));
// get the designated column's number of decimal digits.
System.out.println(rsMetaData.getPrecision(i));
// gets the designated column's number of
// digits to right of the decimal point.
System.out.println(rsMetaData.getScale(i));
// indicates whether the designated column is
// automatically numbered, thus read-only.
System.out.println(rsMetaData.isAutoIncrement(i));
// indicates whether the designated column is a cash value.
System.out.println(rsMetaData.isCurrency(i));
// indicates whether a write on the designated
// column will succeed.
System.out.println(rsMetaData.isWritable(i));
// indicates whether a write on the designated
// column will definitely succeed.
System.out.println(rsMetaData.isDefinitelyWritable(i));
// indicates the nullability of values
// in the designated column.
System.out.println(rsMetaData.isNullable(i));
// Indicates whether the designated column
// is definitely not writable.
System.out.println(rsMetaData.isReadOnly(i));
// Indicates whether a column's case matters
// in the designated column.
System.out.println(rsMetaData.isCaseSensitive(i));
// Indicates whether a column's case matters
// in the designated column.
System.out.println(rsMetaData.isSearchable(i));
// indicates whether values in the designated
// column are signed numbers.
System.out.println(rsMetaData.isSigned(i));
// Gets the designated column's table's catalog name.
System.out.println(rsMetaData.getCatalogName(i));
// Gets the designated column's table's schema name.
System.out.println(rsMetaData.getSchemaName(i));
st.close();
conn.close();
public static Connection getOracleConnection() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@son15644:1521:CXPqa1";
String username = "ess4qa2";
String password = "ess4qa2pw";
Class.forName(driver); // load Oracle driver
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
} -
How to use nested tables object in oracle form
Hello forum
How all r u ..
i need ur help guys, pls help me out...
i m using an object oriented approach to design my database by using nested tables and
varrays. it is quite done successfully.
but the problem is when i m trying to use that object of nested table into the datablock of the form it is not been added to item list of that block.
so what is the proper way to use these type of objects to the form.
all ideas are welcomed and vry much required.
pls give example if possible so easy to understand or have any demo form related to above case then pls post me to my id i.e [email protected]
thank u all and expecting some expert solutionsHello Francois Degrelle...
How r u doing ... i have searched the forum abt the above mentioned topic then i found that u have some demo form which will help out to explain the functionality of the nested table in forms ..
will u pls me that form to my i.e [email protected] pls mail all the detail u have regarding using nested tables to forms and reports
lots of thanks to u n advance. -
How to use nested tables with the inner table in a separate row
Hi,
I am having a problem when changing our existing Adobe printform delivery note so that serial numbers are written for each item line.
I've searched the forum and found many posts relating to nested tables, but none that had exactly my situation.
Currently I print item lines like this (this uses the complete width of the form):
Pos....Quantity...Material..........Description..................................................Date
99.........99.........ABCDEFGH....alksdalksjdlkasjdlsajdlkjasldjaslkdjakslj........9999.99.99
.................................................fskdjflsdfljsdflkjsdlkfjsdlkjfdfsf
.................................................asdkadsfdkfhsdkfhskjdfhks
but I want to add serial numbers after that for each item like this:
Pos....Quantity...Material..........Description...................................................Date
99.........99.........ABCDEFGH....alksdalksjdlkasjdlsajdlkjasldjaslkdjakslj.........9999.99.99
.................................................fskdjflsdfljsdflkjsdlkfjsdlkjfdfsf
.................................................asdkadsfdkfhsdkfhskjdfhks
.................................................Serial numbers:
.................................................9999999999..9999999999..9999999999
.................................................9999999999..9999999999..9999999999
I have added serial numbers to my the current table in the interface/context/data view so it look like this:
TTYP - ITEM_FIELDS
...DATA structure
......POSNR
......QTY
......MATNR
......TTYP - ITEM_TEXTS
.........DATA structure
............DESCRIPTION
......DATE
......TTYP - SERIAL_NOS
.........DATA structure
............SERIAL_COL1
............SERIAL_COL2
............SERIAL_COL3
In my Hierarchy I currently have this hierarchy and binding:
Table - ITEM_FIELDS
...Body Row - DATA
......Cell - POSNR
......Cell - QTY
......Cell - MATNR
......Subform - ItemTexts
.........Table - ITEM_TEXTS
............Body Row - DATA
...............Cell - DESCRIPTION
......Cell - DATE
Now I am trying to add the SERIAL_NOS table into the ITEM_FIELDS/DATA body row right after the DATE cell - but I am not allowed to drag anything into the table structure.
Does anybody have an ida how I can achieve this, please?
Kind regards,
Claus ChristensenHI,
Set the body page as flowed and set the tables also flowed.
go to bodypage>object->subform-->select flowed option.
I thihnk this will work..if u are getting all the records properly into the tables 1 and 2.
Thanks,
Mahdukar -
How to use nested tables in adobe form
Hi All,
I have to use nested tables in adobe form for table display. I have used Subforms for displaying table data. I have changed accessibility of the subforms. Currently i am able to print print the table correctly if there is single material record in table 1 and single corresponding record in table 2. But the requirement is that i will have multiple lines in table 1 for single material and only one record in table 2.
EX: form is for Sales order. in line items if the order is for 100 units then we if we have delivered material as 80, 10, 10, then table 1 will have 3 lines for this. Table 2 will always have only 1 corresponding record.
item--materialdescription-ordered qty--delivered qty--delivery date-price
xxx--xxxxxxx-xxxxxxxxx-10080xxxxxxxxxx-xxxx
10----
xxxxxxxxxx
10----
xxxxxxxxxx
yyyyyyyyyyyyyyyyyyy------yyyyyyyyyyyyyyyyyyyyy
xxxxxx is table 1 and will have multiple lines
yyyyyy is table 2 and will have only 1 entry for item xxx
and this group will be repeate as per no of items. table 1 can have any no of lines per item.
I am currently able to display 1 line for table 1 and 1 line for table 2.
But how to show multiple lines for table 1 and 1 line for table 2.HI,
Set the body page as flowed and set the tables also flowed.
go to bodypage>object->subform-->select flowed option.
I thihnk this will work..if u are getting all the records properly into the tables 1 and 2.
Thanks,
Mahdukar -
How to Populate a table type variable from a cursor
Hi
I have a stored procedure (P1) that returns a ref cursor as the output.
Another procedure (P2) receives this ref cursor (C).
In this procedure (P2), I want to do a Bulk Collect from this ref cursor (C) in
a table type variable that has been declared locally in the procedure P2. I have created appropriate Object Type and Table Types at the database level.
Please advise how to do it. I tried to do it in different ways, but was not able to do it - each time I faced incompatible data-type related issues.
Regards
MadhupWhat I wrote was unclear. Syntactically it is valid and does something. But consider the advantage of a decent design.
SQL> create or replace procedure p1 (o out sys_refcursor) as
2 begin
3 open o for select * from emp;
4 end p1;
5 /
Procedure created.
SQL> create or replace procedure p2(i sys_refcursor) as
2 type emp_tab is table of emp%rowtype;
3 l_emp_tab emp_tab;
4 begin
5 fetch i bulk collect into l_emp_tab;
6 close i;
7
8 for i in 1..l_emp_tab.count loop
9 NULL;
10 end loop;
11 end p2;
12 /
Procedure created.
SQL> CREATE OR REPLACE PROCEDURE p3 IS
2
3 TYPE myarray IS TABLE OF emp%ROWTYPE;
4 l_data myarray;
5
6 CURSOR r IS
7 SELECT * FROM emp;
8
9 BEGIN
10 OPEN r;
11 LOOP
12 FETCH r BULK COLLECT INTO l_data;
13
14 FOR j IN 1 .. l_data.COUNT
15 LOOP
16 NULL;
17 END LOOP;
18
19 EXIT WHEN r%NOTFOUND;
20 END LOOP;
21 CLOSE r;
22 END p3;
23 /
Procedure created.
SQL> set serverout on
SQL> set timing on
SQL> declare
2 r sys_refcursor;
3 begin
4 FOR i IN 1 .. 10000 LOOP
5 p1(r);
6 p2(r);
7 END LOOP;
8 end;
9 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.71
SQL> begin
2 FOR i IN 1 .. 10000 LOOP
3 p3;
4 END LOOP;
5 end;
6 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.21
SQL> Again sorry for being less than clear. -
How to pass conventional table values in object types Dynamically
Hi All,
Need urgent help...
TYPE add_ty is object
(add1 varchar2(50),
add2 varchar2(50),
add2 varchar2(50))
type add_ty_obj is table of add_ty;
create table company_dtl
(cmpid number(10),
cmpname varchar2(100),
address add_ty_obj);
table company_dtl contains demo data as below:-
cmpid cmpname address
C101 abc UK,
USA,
AUS
c102 xyz UK,
CN,
GER
If I want to read data from table and pass data to object add_ty_obj,
So How can I do it dynamically. I am willing to create procedure
which can read data from above table and pass that to mentioned object in
OUT parameter.
Out parameter contains same object type somewhere in middleware.
Please help or advice.
Thanks in Advance..Hi
i have tried to make procedure that take company id as input and give their address as output.I think it might be useful for you. Or if you want something different
please write us with more detail.
CREATE OR REPLACE PROCEDURE READ_DATA_PROC( VAR_CMPID IN NUMBER , VAR_TYP OUT ADD_TY_OBJ)
AS
BEGIN
SELECT ADDRESS INTO VAR_TYP FROM COMPANY_DTL WHERE CMPID = V_CMPID ;
END READ_DATA_PROC;
here i'm also adding your table and type definition i've used
CREATE TYPE ADD_TY IS OBJECT
(ADD1 VARCHAR2(50),
ADD2 VARCHAR2(50),
ADD3 VARCHAR2(50));
CREATE TYPE ADD_TY_OBJ AS TABLE OF ADD_TY;
CREATE TABLE COMPANY_DTL
(CMPID NUMBER(10),
CMPNAME VARCHAR2(100),
ADDRESS ADD_TY_OBJ)
NESTED TABLE ADDRESS STORE AS ADDRESS_TAB;thanks,
Neeraj
Edited by: Neeraj.Ora on Feb 26, 2011 1:03 PM -
How to update Nested tables with xsu
Hello,
I have three tables.
1) DEPARTMENT_TAB
2) EMPLOYEE_TYP
3) ADDRESS_TYP
ADDRESS_TYP is a collection and it is nested inside EMPLOYEE_TYP.
EMPLOYEE_TYP is a collection and it is nested inside DEPARTMENT_TAB.
created with below scropt
CREATE TYPE ADDRESS_TYP AS OBJECT (CITY VARCHAR2(10), STATE VARCHAR2(2));
CREATE TYPE ADDRESS_TYP_NT AS TABLE OF ADDRESS_TYP;
CREATE TYPE EMPLOYEE_TYP AS OBJECT (EMPNO NUMBER(4), ENAME VARCHAR2(10), ADDRESS_VAR ADDRESS_TYP_NT);
CREATE TYPE EMPLOYEE_TYP_NT AS TABLE OF EMPLOYEE_TYP;
CREATE TABLE DEPARTMENT_TAB (DEPTNO NUMBER(4), DNAME VARCHAR2(10), EMPLOYEE_VAR EMPLOYEE_TYP_NT)
NESTED TABLE EMPLOYEE_VAR STORE AS EMPLOYEE_TAB
( NESTED TABLE ADDRESS_VAR STORE AS ADDRESS_TAB);
I inserted two rows in DEPARTMENT_TAB and their nested tables using normalsql. and i generated below xml content using XSU java API
oracle.xml.sql.query.OracleXMLQuery
My Question is How to UPDATE a row in ADDRESS_TAB using XSU java API
oracle.xml.sql.dml.OracleXMLSave.
(When i was trying to update address_tab nested table's row with xml input file. it is deleting other existing rows)
Thanks.Why do you say it does not work?
-
How to update nested table records ??
Hi, I am just starting to write anything in PL/SQL and having some difficulties with basic syntax. Thanks for any help in advance.
My problem is how to update collection (nested table of objects) with SQL statement. My nested table is not a column of regular table.
Example:
CREATE OR REPLACE TYPE tmpRec AS OBJECT(
Col1 INT,
Col2 INT
CREATE OR REPLACE TYPE tmpTable IS TABLE OF tmpRec;
DECLARE v tmpTable :=
tmpMBATable(
tmpRec(1,1),
tmpRec(2,2),
tmpRec(3,3),
BEGIN
--UPDATE TABLE(CAST(v AS tmpTable)) T SET T.Col2 = 1 WHERE T.Col1 =1;
--UPDATE TABLE(v) T SET T.Col2 = 12 WHERE T.Col1 =1;
--UPDATE (SELECT * FROM TABLE(v) )T SET T.Col2 = 12 WHERE T.Col =1;
END;
I am getting either
PL/SQL: ORA-22841: DML is not allowed on PL/SQL Collections
OR
PL/SQL: ORA-00903 Bad table name.
I found there is no problem when collection is a column of DB table (UPDATE TABLE(select collection_column from table) T SET T.Col2 = 12 WHERE T.Col1 =1;) but i want it to be just a collection without storing it in DB, is it possible ?
Please help.898539 wrote:
Thanks, for fast answer but my problem is more complex, maybe you can show me some workaround i try to use collection but maybe i should do something else...A complex problem does not mean a complex solution. In fact, complex problems should ideally be solved by breaking the complexity down into simpler components and then solving each of these in turn.
As far as nested tables go? An interesting feature. But one that I will need a lot of convincing and justification for to consider for a production system. There are some major limitations with using nested tables. And these do not exist when using the simpler form of a standard relational child table instead.
I am migrating from Sybase Adaptive Server Enterprise and searching for sollution for something we used temporary tables for so far.Temporary tables in Sybase are typically used to prevent concurrency issues (readers and writers blocking one another). Thus make a temp copy of the data and do not prevent concurrent access to the source data itself.
These reasons simply do not exist in Oracle. In most cases, using temporary tables in Oracle simply because that is how it was implemented in Sybase, would be fundamentally flawed.
Oracle is not Sybase. It does a very poor imitation of Sybase.
I need a collection that can store some data and I need to be able to use it as a table so I can join to it via SQL query or call some DML on it.Why do you need a collection? The best place for data in Oracle is inside a table. Not inside a collection - especially not if that collection resides in PGA memory in the PL/SQL engine.
In my store procedure I am updating, deleteing and inserting some data to it depends on context.What context? Oracle supports context namespaces - often used for virtual private database (VPDB) implementations. If you are referring to scope instead - there are a number of ways that Oracle supports scope too.
The bottom line is that you should not approach this problem with "+how do I convert this Sybase method into an Oracle method+". Instead you need to look at the business requirement that the Sybase method addresses and then determine how best to address that requirement using Oracle. -
Require help on Array of Nested tables and Oracle Object type
Hi All,
I have a scenario where I have some millions of records received from a flat file and the record is stored in Table as below:
Tablename: FILE_RECORD
Rows:
FILE_REG_ID = 1
RECORD_NBR = 1
PROCESSED_IND = U
RECORD= 00120130326006A
FILE_REG_ID = 1
RECORD_NBR = 2
PROCESSED_IND = U
RECORD= 00120130326003
1) I have to read these records at once and
a) Split the RECORD column to get various other data Eg: Fld1=001, Fld2=20130326, Fld3 = 003
b) send as an Array to Java.
2) Java will format this into XML and sent to other application.
3) The other application returns a response as Successful or Failure to Java in XML
4) Java will send RECORD_NBR and the corresponding response as Success or Failure back to PLSQL
5) PLSQL should match the RECORD_NBR and update the PROCESSED_IND = P.
I 'm able to achieve this using SQL Table type by creating a TYPE for Each of the fields (Flds) however the problem is Java cannot Access the parameters as the TYPE are of COLUMN Types
Eg: For RECORD_NBR
SUBTYPE t_record_nbr IS FILE_RECORD.T010_RECORD_NBR%TYPE;
Can you please let me know how I can achieve this to support Java, I know one way that is by creating an OBJECT TYPE and a TABLE of the OBJECT TYPE.
Eg: T_FILE_RECORD_REC IS OBJECT
FILE_REG_ID number(8), RECORD_NBR number (10), PROCESSED_IND varchar2(1), RECORD varchar(20)
Create type T_FILE_RECORD_TAB IS TABLE OF T_FILE_RECORD_REC
However I'm facing a problem to populate an Array of records, I know I'm missing something important. Hence please help.
It would be helpful to provide some guidelines and suggestions or Pseudo or a Code to achieve this. Rest all I can take up further.
Thanks in advance,I know once way that is creating a OBJECT TYPE and a TABLE of OBJECT TYPE, howeve I feel I'm missing something to achieve this.You're right, you need SQL object types created at the database level. Java doesn't know about locally defined PL/SQL types
However you can do without all this by creating the XML directly in PL/SQL (steps 1+2) and passing the document to Java as XMLType or CLOB.
Are you processing the records one at a time? -
View of values in nested table attribute of object type
Hi,
I have:create or replace type ctx_line is object (
ctx_name varchar2(40),
ctx_value varchar2(1000)
create or replace type ctx_tab is table of ctx_line;
create type tp as object (
id number,
ctx ctx_tab
create table tt of tp nested table ctx store as ctx_nesttab;
create or replace view v as
SELECT VALUE(o).id as id
FROM tt o;Now I want to create an another view containing fields ctx_name, ctx_value and a key (maybe NESTED_TABLE_ID?) to the parent record in tt table. I must be able to join that view to each other. This is necessary because I will use that views in Forms 4.5 (which do not support nested tables).
Can someone help me, please?I'm not sure what you are looking for exactly but is it something like this?
SELECT id
, p.ctx_name
, p.ctx_value
FROM tt
, TABLE(ctx) pWith the following test data:
INSERT INTO tt VALUES(1,CTX_TAB(CTX_LINE('A','SOME VALUE1')));
INSERT INTO tt VALUES(1,CTX_TAB(CTX_LINE('B','SOME VALUE2')));
INSERT INTO tt VALUES(1,CTX_TAB(CTX_LINE('B','SOME VALUE2')));this is the result:
SQL> SELECT id
2 , p.ctx_name
3 , p.ctx_value
4 FROM tt
5 , TABLE(ctx) p
6 /
ID CTX_NAME CTX_VALUE
1 A SOME VALUE1
1 B SOME VALUE2
1 B SOME VALUE2 -
How to use nested table values in IN expression?
Hi!
Can someone please give me a hint to the correct syntax for this:
declare
TYPE numtable is table of number;
tt numtable;
begin
select myId bulk collect into tt from some_table;
update some_other_table set name = 'kakadu' where xId in (select * from tt); -- this line is wrong as it is
end;What I am doing is fixing a stored procedure that was like this before:
update table_a set name = 'kakadu' where column_X in (select one.A from table_1 one join table_a on x y z WHERE a b c);
update table_b set name = 'nimfa' where column_Y in (select one.B from table_1 one join table_a on x y z WHERE a b c);The problem is, the first UPDATE changes the result of the SELECT, so I want to "remember" it.
A and B are columns in table_1, A is the primary key. So the fixed code would be like:
-- store the list of selected IDs from table_1
select A bulk collect into tt from table_1 one join table_a on x y z WHERE a b c ; -- same conditions as in old code
-- do the updates
update table_a set name = 'kakadu' where column_X in (select * from tt);
update table_b set name = 'nimfa' where column_Y in (select one.B from table_1 one where one.A in tt);(it can be a varray instead of nested table, as far as I am concerned)
Thanks,
DavidYes, it needs to be a SQL type
Re: How to pass an array to a function from a SELECT statement
Or you can use a built in SQL type (version dependent)
Re: Collection in where not working -
NESTED TABLE BIND VARIABLE IN A REF CURSOR
Hi,
this works:
open c_ref for v_sql using cp_asset_type
where cp_asset_type is a nested tables passed into the proc as an 'in' parameter, but since the number of passed tables varies I loaded the nemes into an a nested table and tried the following:
-- ELSIF BIND_COUNT.COUNT = 8 THEN
-- OPEN C_REF FOR V_SQL
-- USING BIND_COUNT(1),BIND_COUNT(2),BIND_COUNT(3),BIND_COUNT(4),BIND_COUNT(5),BIND_COUNT(6),BIND_COUNT(7),BIND_COUNT(8);
-- END IF;
which produced :
ORA-22905 CANNOT ACCESS ROWS FROM A NON-NESTED TABLE ITEM
my guess is that I'm passing the varchar2 names of the nested tables and the 'using' statement needs the actual table ????
if this is true is there any way to pass a pointer for the bind variable nested tables?
Thanks,
Victor<br>i removed the AND...but m still getting the same error.
<br>Is this a versioning problem...since urs is 9i and m using
<br>Oracle8i Enterprise Edition Release 8.1.7.4.0
<br> PROCEDURE sp_SearchByDriverName(i_C in varchar2,
i_F in varchar2,
i_LN in varchar2,
i_FN in varchar2,
o_Result out ABC_CURTYPE) is
<br> tm_corp varchar2(2);
<br> tm_fleet varchar2(6);
<br> dc ABC_curtype;
<br> begin
<br> tm_c := getformattedc(i_C);
<br> tm_f := getformattedf(i_f);
<br> if i_FN is not null then
<br> open dc for
<br> SELECT distinct b.bus_ref_access_value,
<br> i.individual_id,
<br> br.mf_driver_last_name LN,
<br> br.mf_driver_first_name FN,
<br> substr(b.bus_ref_access_value, 4, 6) FLEET1,
<br> (select '4444' from dual) --error is still coming here
<br> FROM bus_ref_access_values b,
<br> bus_ref_list brl,
<br> individual i,
<br> unit_contact_list f,
<br> unit u,
<br> bus_ref_current_prop br
<br> WHERE b.bus_ref_id = br.bus_ref_id AND
<br> b.bus_ref_id = brl.bus_ref_id AND
<br> brl.reference_id = u.reference_id AND
<br> u.unit_id = f.unit_id(+) AND
<br> i.individual_id = f.individual_id AND
<br> f.contact_type_ref = 'DR' AND
<br> br.mf_driver_last_name like i_LN || '%' AND
<br> br.mf_driver_first_name like i_FN || '%' AND
<br> substr(b.bus_ref_access_value, 1, 2) = tm_c AND
<br> substr(b.bus_ref_access_value, 4, 6) = tm_f AND
<br> b.bus_ref_access_label = 'UNIT NUMBER'
<br> ORDER BY 4, 3, 2;
<br> close dc;
<br>end if;
Maybe you are looking for
-
What are the standard Solutions available for Complaints Management in CRM?
Dear all, What are the standard solutions available in SAP CRM to receive and process complaints through Customer Interaction Center. Our requirement is to receive and register complaints from contact center and process them by integrating back end E
-
IVew Error:Create IVIEW in a Portal for a SAP BW Query
Hi, My requirment is to publish a BW Query to Portal. When i tried to create a iver for a particular BW query in portal.....it is pulling every thing. When i click to execute a query for which i created iview...a new window pops up and and displays q
-
My ipod classic has frozen and ive tried the recommended solution but it remains frozen. Please can you advise?
-
Hello there, I am trying to import Roles in CUP for Portal system and I have the following error ''ERROR Error occurred while importing roles. com.virsa.ae.configuration.ConfigurationException: java.rmi.RemoteException: Service call exception; nested
-
Bought my new imac on Saturday and am a virgin user!Hurrah! I was led to believe I will not be plagued with virus and nasties, but on doing a bit of general surfing yesterday a page flashed up that looked like a windows type application warning me of