Using TABLE type,display '???'
Recently,I want pass a TABLE as parameter from PLSQL to java.
the TABLE is consisted of Object;
Following is source code:
step1:
CREATE OR REPLACE TYPE o_obj AS OBJECT
id number,
name varchar2(50),
CONSTRUCTOR FUNCTION obj008 RETURN SELF AS RESULT
step 2:
CREATE OR REPLACE TYPE nt_rec_objs IS TABLE OF o_obj
step 3:
create or replace package PKG_PUB_SCD_BATCH is
procedure p_test(
o_param1 in number,
o_rs out nt_rec_objs
)as
begin
end;
step4:
In java,call the procedure by oracle.jdbc.*
If the value is number,Java will print it .
If the value is other predefined type(varchar,varchar2,char etc) .Java will print '???'.
First I think it caused by different character set.
when I change procedure P_TEST,make it pass directly a varchar2,not a TABLE,
Java can print it normally.
I do know why it is .Who can help me??
Hi,
I am using table emp having fields id,name,,,,,,,,,photo,mimetype,filename,last_update_date.
photo is of type BLOB. I updated photo (text item) on form.
I Used BLOB DOWNLOAD Format Mask with appropriate entries & selected display as Attachment.
So my problem is partially solved. Now if DOWNLOAD link on Form is clicked it displays Excel sheet
in different window. But still, DOWNLOAD link on my Interactive report not working properly.
DOWLOAD on interactive if it is clicked it has two problems
1) It opens image or notepad file in same window.
2) Not able to open Excel sheet.
thanks for reply.
Similar Messages
-
Hi All,
I am trying to create one RFC. But in that RFC, I wish to use Table types as import and export parameters completly avoiding Tables tab. Will that effect the performance of RFC if I use Table types. If Yes, Please give clear clarification where it effects the performance.
Also please let me know how the performance of the RFC is effected if we use Tables tab.
Thanks,
Ravee.."I wish to use Table types as import and export parameters completly avoiding Tables tab."
I'm not sure if Tables can be avoided, if just using regular ABAP. I know that the Importing tab would not work when I tried it (under vrs 4.6b).
Because you are launching separate processes, in separate memory areas: any parameter you use in RFC has to be known by the calling and the callee functions/programs. This means that you need a common reference. If you have more than one function module in a function group, you can use the TOP file and a 'Z' data dictionary structure.
I hope that this helps,
Dan Perecky -
How to use table type in bulk collect
Hi experts,
How to use table type in bulk collect see the procedure used( oracle 10g)
and error is
PLS-00597: expression 'REQ_REC' in the INTO list is of wrong type
CREATE OR REPLACE PROCEDURE SAMPLE_SP IS
TYPE TYP_A AS OBJECT
( COLMN1 TABLE1.COLM1%TYPE,
COLMN2 TABLE1.COLM2%TYPE,
COLMN3 TABLE1.COLM3%TYPE
TYPE REC_A IS TABLE OF TYP_A;
REQ_REC A_REC;
CURSOR REQ_CUR IS SELECT COLM1,COLM2,COLM3 FROM TABLE1 WHERE <CONDITION>;
BEGIN
OPEN REQ_REC;
LOOP
EXIT WHEN REQ_REC%NOTFOUND;
FETCH REQ_REC BULK COLLECT INTO REQ_REC LIMIT 1000;
FOR I IN 1..REQ_REC.COUNT
LOOP
<insert statement>
END LOOP;
COMMIT;
END LOOP;
END SAMPLE_SP;
Many thanks,
Kalingaok but that is not an issue..
Hi experts,
How to use table type in bulk collect see the procedure used( oracle 10g)
and error is
PLS-00597: expression 'REQ_REC' in the INTO list is of wrong type
CREATE OR REPLACE PROCEDURE SAMPLE_SP IS
TYPE TYP_A AS OBJECT
( COLMN1 TABLE1.COLM1%TYPE,
COLMN2 TABLE1.COLM2%TYPE,
COLMN3 TABLE1.COLM3%TYPE
TYPE REC_A IS TABLE OF TYP_A;
REQ_REC A_REC;
CURSOR REQ_CUR IS SELECT COLM1,COLM2,COLM3 FROM TABLE1 WHERE <CONDITION>;
BEGIN
OPEN REQ_CUR;
LOOP
EXIT WHEN REQ_REC%NOTFOUND;
FETCH REQ_REC BULK COLLECT INTO REQ_REC LIMIT 1000;
FOR I IN 1..REQ_REC.COUNT
LOOP
<insert statement>
END LOOP;
COMMIT;
END LOOP;
END SAMPLE_SP;
Many thanks,
Kalinga
Message was edited by:
Kalinga -
Datasources with function module which uses table type
hi..
I am creating a datasource which extracts data using a function module from xRPM to BW. When creating the function module it gives an error " TABLES parameters are obsolete!" while trying to specify the extract structure. I searched in SDN and learnt that we need to use table types and use that in the changing tab.Not sure how that works and where we need to use the extract structure for this.
Could someone please explain this to me and let me know how i can create my datasource using this type of function module.Hi,
in your case you need the tables parameter, as the service api expects the result of the fm in a table called e_t_data. Of course table parameters are obsolet but you can just ignore the warning and it will work.
regards
Siggi
PS: Extraction fm must follow a strict interface definition.
Message was edited by:
Siegfried Szameitat -
Page break handeling when using table type field
Hello everyone
I've created an adobe form using tcode SFP.
A table, "T1", is containing fields where one of it is a TABLE TYPE (Let give the following name "T1-FT1").
So the structure can look like:
T1-F1
T1-F2
T1-FT1-FTF1
T1-FT1-FTF2
basically the structure is like to have documents containing several items where those items have several serial number.
I need to have page break per documents, per items and serial number where those one have specific header page different than the document itself.
I need to have a page break per T1 records with specifc header.
So for each new records of T1, I have to create a new page with it's specific header.
The table T1-FT1 is starting on the current page, but if I have to many records to stay on the page I need to create another page with it's specific header that is different than the page 1.
My problem is the page break handling.
I can have the pagination tab at the Table1 and row1 level but I don't have the pagination tab at the T1-FT1 level.
Here is what my hierarchy:
_MasterPage
__Page1
__Page2
_MainSubForm
__Subform1
___Table1
____Row1
_____Subform
______Table2
________Row2
Example of Data:
T1-F1 ___ T1-F2 __ T1-FT1-FTF1 __ T1-FT1_FTF2
A _______ B _____ 1 ___________ 1
A _______ B _____ 1 ___________ 2
B _______ C _____ 1 ___________ 1
B _______ D _____ 1 ___________ 2
B _______ D _____ 1 ___________ 3
The final page break layout should look like:
Page1
Header1
A B
___ 1 1
___ 1 2
Page2
Header1
B C
___ 1 1
___ 1 2
Page 3
Header2
B C
___ 1 3
Because there is not enough room on page 2 for the last record of the table T1-FT1, a new header is used on page 3.
Actually several problems occurs. I cannot have the proper page break set to avoid empty pages as first or last page.
The pagination tab stop to be available after the Row1. So we cannot set page break at the table2 and row2.
The page break contidion doesn't work. "Well I didn't succeed to make it work".
Any idea on how to handle those page break at table2 level?
Is anyone had to create a PDF form where we have the date into several level of structure?
Regards
dstj
Edited by: dstj on Feb 18, 2010 10:59 PM
Edited by: dstj on Feb 18, 2010 11:00 PMI have the exact same issue. Could not find a solution. In my case, there are multiple subforms printed one below the other. If an expandable subform overflows into a new page, the last line overlaps with the text of next subform. I have added blank spaces between the subforms but, that does not solve the issue.
Finally, I have managed to minimize the occurrence of the issue by doing the following. Only turn on the flag "Allow Page breaks within content" for subforms that can really spread over many pages. All other subforms, turn the flag off. This minimizes the possibility of overlapping. -
Question on using table types in methods
Hi
I have a simple question involving passing table types in method
I want to pass an internal table by reference - to a method and within the method populate the internal table (t1) using a select * into the internal table and then sort t1 by f1 and f2. t1 is an internal table based on a ABAP dictionary table ( at1 )
Question is : If I use a generic type TABLE declaration , it does not allow sort operation specifically by fields. If I use type at1 as in
the METHODS M1 exporting t1 type at1statement, syntax error is - t1 is not an internal table.
How do I achieve the above using the method implementation ?
Sample code that I try
CLASS C1 DEFINITION
PUBLIC SECTION
METHODS M1 exporting t1 type table
ENDMETHOD
ENDCLASS
CLASS C1 IMPLEMENTATION
METHOD M1
select * from at1 into t1.
sort t1 field f1 f2
ENDCLASSYou should define a TABLE TYPE based upon the data dictionary type (at1) either in the data dictionary using SE11 or in the TYPES section of the class.
Then define the parameter of this new type.
Cheers
Graham Robbo -
In Smartforms can i use table type which has table inside table
Hi ,
I would like to know whether in Form Interface can we declare table type which has a table and one of its field is again a table( Nested tables)..
Can we declare like that ?? Need your suggestions please...
Rgds.,
subashYes, we can.
Check Smartform LB_BIL_INVOICE
Importing parameter IS_BIL_INVOICE TYPE LBBIL_INVOICE
Regards,
Naimesh Patel -
Hi All,
can anyone tell me
What does table type mean?
Why table type is used?
What are the advantages of using Table Type?
Regards,
Chandra PrakashHi,
Table Types
A table type describes the structure and functional attributes of an internal table in ABAP. In ABAP programs you can reference a table type TTYP defined in the ABAP Dictionary with the command DATA <inttab> TYPE TTYP. An internal table <inttab> is created in the program with the attributes defined for TTYP in the ABAP Dictionary.
A table type is defined by:
its line type, that defines the structure and data type attributes of a line of the internal table
the options for managing and accessing the data ( access mode) in the internal table
the key ( key definition and key category) of the internal table
The row type is defined by directly entering the data type, length and number of decimal places or by referencing a data element, structured type ( structure, table or view) or other table type. Or the row type can be a reference type.
Table type TABTYPE shown in the graphic can be used with the statement DATA <name> TYPE TABTYPE in ABAP programs to define an internal table <name>.
A local type <name> that takes on the attributes of type TABTYPE can be defined in the program with TYPES <name> TYPE TABTYPE.
Reward if Helpful -
How to display .doc/.xls file uploaded using blob type of column in table.
Hi,
Here
http://www.oracle.com/technology/obe/apex/apex31nf/apex31blob.htm
I learnt about uploading & viewing file through BLOB in a form or report . It works fine for pictures & notepad file. But when i upload word file (i.e. *.doc) or excel file ( *.xls ) , and try to view it through DOWNLOAD
it gives message box
' Do you want to save this file, or find program online to open it?'
I searched lot but enable to find proper & easy to understand solution.
Hope understand my problem.
Thanks in advance.Hi,
I am using table emp having fields id,name,,,,,,,,,photo,mimetype,filename,last_update_date.
photo is of type BLOB. I updated photo (text item) on form.
I Used BLOB DOWNLOAD Format Mask with appropriate entries & selected display as Attachment.
So my problem is partially solved. Now if DOWNLOAD link on Form is clicked it displays Excel sheet
in different window. But still, DOWNLOAD link on my Interactive report not working properly.
DOWLOAD on interactive if it is clicked it has two problems
1) It opens image or notepad file in same window.
2) Not able to open Excel sheet.
thanks for reply. -
How to display name of the table and the description and the table type
Hi,
Can you people tell me how to display the name of the table and the description and the table type (View, structure, etc...) used in the program.
I want to display in a list.
Kind Regardsuse this program
TABLES : TSTC, tstct.
TABLES : DD03l, DD02l.
DATA : Program like sy-repid.
DATA : BEGIN OF I_FINAL OCCURS 0,
tabname LIKE dd02l-tabname,
TABCLASS LIKE dd02l-tabCLASS,
TEXT LIKE DD02T-DDTEXT,
END OF I_FINAL.
DATA : BEGIN of ITAB Occurs 0,
name like dd02l-tabname,
END OF ITAB.
DATA : TCD(100) TYPE C.
DATA : var1 LIKE dd02l-tabname.
DATA : DESC LIKE TSTCT-TTEXT.
selection-screen skip.
SELECTION-SCREEN : BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS : r1 RADIOBUTTON GROUP r DEFAULT 'X'.
Parameters : Tcode like sy-tcode.
selection-screen skip.
PARAMETERS : r2 RADIOBUTTON GROUP r.
Parameters : Prog like sy-repid.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-001.
select-options : Type for dd02l-tabclass .
SELECTION-SCREEN END OF BLOCK B1 .
at selection-screen.
if r1 = 'X' and Tcode is initial.
message e001(00) with 'Enter Transaction Code' .
elseif r2 = 'X' and Prog is initial.
message e001(00) with 'Enter Program Name' .
endif.
START-OF-SELECTION.
if r1 = 'X'.
Prog = ' '.
select single * from TSTC where tcode = tcode.
if sy-subrc = 0.
program = TSTC-PGMNA.
select single TTEXT from tstct into desc where tcode = tcode and SPRSL = 'E'.
else.
Write :/ 'Invalid Transaction Code'.
exit.
endif.
elseif r2 = 'X'.
Tcode = ' '.
program = Prog.
endif.
CALL FUNCTION 'GET_TABLES'
EXPORTING
PROGNAME = Program
TABLES
TABLES_TAB = itab.
if itab is initial.
skip.
skip.
skip.
skip.
skip.
WRITE :/40 'No Data Found' color 6 INTENSIFIED OFF.
ELSE.
PERFORM : categorize.
endif.
END-OF-SELECTION.
LOOP AT I_FINAL.
WRITE :/4 I_FINAL-tabname COLOR 2 INTENSIFIED OFF NO-GAP HOTSPOT ON, 35 I_FINAL-TABCLASS COLOR 2 INTENSIFIED OFF NO-GAP,
50 I_FINAL-TEXT COLOR 2 INTENSIFIED OFF NO-GAP.
ENDLOOP.
AT LINE-SELECTION.
TCD = SY-LISEL.
var1 = TCD+3(30).
set parameter id 'DTB' FIELD VAR1.
call transaction 'SE11' and skip first screen.
TOP-OF-PAGE.
WRITE :/45 'TABLE DETAILS RELATED TO THE TRANSACTION CODE' COLOR 7 .
WRITE :/2 'DATE : ' COLOR 1, SY-DATUM COLOR 1 INTENSIFIED OFF NO-GAP.
WRITE :/2 'TRANSACTION CODE : ' COLOR 1, Tcode COLOR 1 INTENSIFIED OFF NO-GAP.
WRITE :/2 'TCODE DESCRIPTION : ' COLOR 1, desc COLOR 1 INTENSIFIED OFF NO-GAP.
WRITE :/2 'PROGRAM NAME : ' COLOR 1, PROGRAM COLOR 1 INTENSIFIED OFF NO-GAP.
SKIP 1.
WRITE :/1(140) SY-ULINE.
WRITE :/4 'TABLE NAME' COLOR 5 INTENSIFIED OFF NO-GAP,35 'TABLE TYPE' COLOR 5 INTENSIFIED OFF NO-GAP,
55 'DESCRIPTION' COLOR 5 INTENSIFIED OFF NO-GAP.
WRITE :/1(140) SY-ULINE.
*& Form categorize
text
--> p1 text
<-- p2 text
FORM categorize .
SELECT dd02ltabname dd02ltabCLASS DD02T~DDTEXT
FROM dd02l INNER JOIN DD02T ON dd02ltabname = dd02Ttabname
INTO TABLE I_FINAL
FOR ALL ENTRIES IN itab
WHERE DD02L~TABNAME = ITAB-NAME AND TABCLASS IN TYPE AND DDLANGUAGE = 'E'.
if sy-subrc <> 0.
skip.
skip.
skip.
skip.
skip.
WRITE :/40 'No Data Found' color 6 INTENSIFIED OFF.
endif. -
Managing statistics for object collections used as table types in SQL
Hi All,
Is there a way to manage statistics for collections used as table types in SQL.
Below is my test case
Oracle Version :
SQL> select * from v$version;
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
SQL> Original Query :
SELECT
9999,
tbl_typ.FILE_ID,
tf.FILE_NM ,
tf.MIME_TYPE ,
dbms_lob.getlength(tfd.FILE_DATA)
FROM
TG_FILE tf,
TG_FILE_DATA tfd,
SELECT
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
) tbl_typ
WHERE
tf.FILE_ID = tfd.FILE_ID
AND tf.FILE_ID = tbl_typ.FILE_ID
AND tfd.FILE_ID = tbl_typ.FILE_ID;
Elapsed: 00:00:02.90
Execution Plan
Plan hash value: 3970072279
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 194 | 4567 (2)| 00:00:55 |
|* 1 | HASH JOIN | | 1 | 194 | 4567 (2)| 00:00:55 |
|* 2 | HASH JOIN | | 8168 | 287K| 695 (3)| 00:00:09 |
| 3 | VIEW | | 8168 | 103K| 29 (0)| 00:00:01 |
| 4 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 8168 | 16336 | 29 (0)| 00:00:01 |
| 5 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 6 | TABLE ACCESS FULL | TG_FILE | 565K| 12M| 659 (2)| 00:00:08 |
| 7 | TABLE ACCESS FULL | TG_FILE_DATA | 852K| 128M| 3863 (1)| 00:00:47 |
Predicate Information (identified by operation id):
1 - access("TF"."FILE_ID"="TFD"."FILE_ID" AND "TFD"."FILE_ID"="TBL_TYP"."FILE_ID")
2 - access("TF"."FILE_ID"="TBL_TYP"."FILE_ID")
Statistics
7 recursive calls
0 db block gets
16783 consistent gets
16779 physical reads
0 redo size
916 bytes sent via SQL*Net to client
524 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed Indexes are present in both the tables ( TG_FILE, TG_FILE_DATA ) on column FILE_ID.
select
index_name,blevel,leaf_blocks,DISTINCT_KEYS,clustering_factor,num_rows,sample_size
from
all_indexes
where table_name in ('TG_FILE','TG_FILE_DATA');
INDEX_NAME BLEVEL LEAF_BLOCKS DISTINCT_KEYS CLUSTERING_FACTOR NUM_ROWS SAMPLE_SIZE
TG_FILE_PK 2 2160 552842 21401 552842 285428
TG_FILE_DATA_PK 2 3544 852297 61437 852297 852297 Ideally the view should have used NESTED LOOP, to use the indexes since the no. of rows coming from object collection is only 2.
But it is taking default as 8168, leading to HASH join between the tables..leading to FULL TABLE access.
So my question is, is there any way by which I can change the statistics while using collections in SQL ?
I can use hints to use indexes but planning to avoid it as of now. Currently the time shown in explain plan is not accurate
Modified query with hints :
SELECT
/*+ index(tf TG_FILE_PK ) index(tfd TG_FILE_DATA_PK) */
9999,
tbl_typ.FILE_ID,
tf.FILE_NM ,
tf.MIME_TYPE ,
dbms_lob.getlength(tfd.FILE_DATA)
FROM
TG_FILE tf,
TG_FILE_DATA tfd,
SELECT
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
tbl_typ
WHERE
tf.FILE_ID = tfd.FILE_ID
AND tf.FILE_ID = tbl_typ.FILE_ID
AND tfd.FILE_ID = tbl_typ.FILE_ID;
Elapsed: 00:00:00.01
Execution Plan
Plan hash value: 1670128954
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 194 | 29978 (1)| 00:06:00 |
| 1 | NESTED LOOPS | | | | | |
| 2 | NESTED LOOPS | | 1 | 194 | 29978 (1)| 00:06:00 |
| 3 | NESTED LOOPS | | 8168 | 1363K| 16379 (1)| 00:03:17 |
| 4 | VIEW | | 8168 | 103K| 29 (0)| 00:00:01 |
| 5 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 8168 | 16336 | 29 (0)| 00:00:01 |
| 6 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 7 | TABLE ACCESS BY INDEX ROWID | TG_FILE_DATA | 1 | 158 | 2 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | TG_FILE_DATA_PK | 1 | | 1 (0)| 00:00:01 |
|* 9 | INDEX UNIQUE SCAN | TG_FILE_PK | 1 | | 1 (0)| 00:00:01 |
| 10 | TABLE ACCESS BY INDEX ROWID | TG_FILE | 1 | 23 | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
8 - access("TFD"."FILE_ID"="TBL_TYP"."FILE_ID")
9 - access("TF"."FILE_ID"="TBL_TYP"."FILE_ID")
filter("TF"."FILE_ID"="TFD"."FILE_ID")
Statistics
0 recursive calls
0 db block gets
16 consistent gets
8 physical reads
0 redo size
916 bytes sent via SQL*Net to client
524 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed
Thanks,
BThanks Tubby,
While searching I had found out that we can use CARDINALITY hint to set statistics for TABLE funtion.
But I preferred not to say, as it is currently undocumented hint. I now think I should have mentioned it while posting for the first time
http://www.oracle-developer.net/display.php?id=427
If we go across the document, it has mentioned in total 3 hints to set statistics :
1) CARDINALITY (Undocumented)
2) OPT_ESTIMATE ( Undocumented )
3) DYNAMIC_SAMPLING ( Documented )
4) Extensible Optimiser
Tried it out with different hints and it is working as expected.
i.e. cardinality and opt_estimate are taking the default set value
But using dynamic_sampling hint provides the most correct estimate of the rows ( which is 2 in this particular case )
With CARDINALITY hint
SELECT
/*+ cardinality( e, 5) */*
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
) e ;
Elapsed: 00:00:00.00
Execution Plan
Plan hash value: 1467416936
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 5 | 10 | 29 (0)| 00:00:01 |
| 1 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 5 | 10 | 29 (0)| 00:00:01 |
| 2 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
With OPT_ESTIMATE hint
SELECT
/*+ opt_estimate(table, e, scale_rows=0.0006) */*
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
) e ;
Execution Plan
Plan hash value: 4043204977
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 5 | 485 | 29 (0)| 00:00:01 |
| 1 | VIEW | | 5 | 485 | 29 (0)| 00:00:01 |
| 2 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 5 | 10 | 29 (0)| 00:00:01 |
| 3 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
With DYNAMIC_SAMPLING hint
SELECT
/*+ dynamic_sampling( e, 5) */*
FROM
TABLE
SELECT
CAST(TABLE_ESC_ATTACH(OBJ_ESC_ATTACH( 9999, 99991, 'file1.png', NULL, NULL, NULL),
OBJ_ESC_ATTACH( 9999, 99992, 'file2.png', NULL, NULL, NULL)) AS TABLE_ESC_ATTACH)
FROM
dual
) e ;
Elapsed: 00:00:00.00
Execution Plan
Plan hash value: 1467416936
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 2 | 4 | 11 (0)| 00:00:01 |
| 1 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 2 | 4 | 11 (0)| 00:00:01 |
| 2 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
Note
- dynamic sampling used for this statement (level=2)I will be testing the last option "Extensible Optimizer" and put my findings here .
I hope oracle in future releases, improve the statistics gathering for collections which can be used in DML and not just use the default block size.
By the way, are you aware why it uses the default block size ? Is it because it is the smallest granular unit which oracle provides ?
Regards,
B -
How to use Oracle Table Type values in Select Statement.
Hi,
I am fetching initial set of values into Oracle Table of Records Type and want to use list of values in the Select statement.
For example, try something like the following:
TYPE t_record IS RECORD (
ID TABLEA.ID%type,
NO TABLEA.NO%type,
v_record t_record;
TYPE t_table IS TABLE OF v_record%TYPE;
v_table t_table;
-- Code to populate the values in v_table here.
SELEC ID,NO, BULK COLLECT INTO <some other table variabes here> FROM TABLEA
WHERE ID IN v_table(i).ID;
I want to know how to use the values from Oracle Table Type in the Select Statement.Something like this:
create or replace type t_record as object (
id number,
no number
CREATE or replace type t_table AS TABLE OF t_record;
set serveroutput on
declare
v_table t_table := t_table();
v_t1 t_table := t_table();
begin
v_table.extend(1);
v_table(1).ID := 1;
v_table(1).No := 10;
v_table.extend(1);
v_table(2).ID := 2;
v_table(2).ID := 20;
SELEC t_record (ID,NO) BULK COLLECT INTO v_t1
from TableA
FROM TABLEA
WHERE ID IN (select t.ID from table(v_Table) t);
for i in 1..v_t1.count loop
dbms_output.put_line(v_t1(i).ID);
dbms_output.put_line(v_t1(i).No);
end loop;
end;
/Untested!
P;
Edited by: bluefrog on Mar 5, 2010 5:08 PM -
How to use record type for inserting data into a table
I've read through the web the following tip:
"When working with a large number of columns, using variables of type RECORD is a better approach. With this approach, you do not have to list anything in the INSERT statement, because you are inserting a variable into the table that is defined as a row from the same table."
I usually define a variable as
r_mytable mytable%ROWTYPE;
and inside my procedure I'll set the fields I need as
r_mytable.field1 := 1;
r_mytable.field3 := 7;
and then I perform the insert as
insert into mytable
(field1,
field3)
values
(r_mytable.field1,
r_mytable.field3);
According to the tip I've copied above, how can I use the TYPE RECORD of pl/sql for achieving the same result but perhaps in a smarter way?
Thanks in advance!Hi,
Are you looking for this?
SQL> create table table1 (id number, descr varchar2(30));
Table created
SQL>
SQL> DECLARE
2 my_rec table1%rowtype;
3 BEGIN
4 my_rec.id := 1;
5 my_rec.descr := 'TEST';
6 insert into table1 values my_rec;
7 END;
8 /
PL/SQL procedure successfully completed
SQL> select * from table1;
ID DESCR
1 TESTWorks with UPDATE too :
SQL> DECLARE
2 my_rec table1%rowtype;
3 BEGIN
4 my_rec.id := 2;
5 my_rec.descr := 'TEST2';
6 update table1 set row = my_rec where id = 1;
7 END;
8 /
PL/SQL procedure successfully completed
SQL> select * from table1;
ID DESCR
2 TEST2 -
Need to display Internal table records on screen without using table contro
Hi Experts,
I have a requirement to display internal table on screen which is having three columns (Material no, Serial No and quantity).
But I can't use table control as it is not supported by hand held devices.
They are going to use this transaction on hand held devices.
Thanks In advance.
GauravYou should be able to use the good old STEP LOOP processing for this... create your three fields in the row then convert them to a STEP-LOOP.
You can look up in the help how to work with STEP-LOOPs if you are not familiar with it. It was the way to manage table-like information before the age of table controls -
Whats is table type ? whats the use of it in abap?
hi,
i am ahmed abap fresher,
i want to know what is table type and whats the use of it. at what point/situation we utilize this table type.Hi Ahmed ,
Table is apart of data dictionary.
Table is a sort of container where we store data.
For eg. you want to store customer record in the database.Now you will store that customer record against specific fields of the applicable table.
You can create or see table by means of transaction code se11.
There are 3 typesof tables available in SAP ABAP:
1. Transparent table
2. Pool table
3. Cluster table.
Transparent Table:
A physical table definition in the database for the table definition which is stored in the ABAP Dictionary for transparent tables when the
table is activated. The table definition is translated from the ABAP
Dictionary to a definition of the particular database.
Pooled table:
Pooled tables can be used to store control data (e.g. screen sequences,
program parameters or temporary data). Several pooled tables can be
combined to form a table pool. The table pool corresponds to a physical
table on the database in which all the records of the allocated pooled
tables are stored.
Cluster table:
Cluster tables contain continuous text, for example, documentation.
Several cluster tables can be combined to form a table cluster. Several
logical lines of different tables are combined to form a physical record
in this table type. This permits object-by-object storage or
object-by-object access. In order to combine tables in clusters, at
least parts of the keys must agree. Several cluster tables are stored in
one corresponding table on the database.
See the documetation at:
http://help.sap.com/saphelp_nw04/helpdata/en/cf/21f083446011d189700000e8322d00/frameset.htm
http://help.sap.com/saphelp_nw04/helpdata/en/81/415d363640933fe10000009b38f839/frameset.htm
Reward if useful ...
Regards ,
Shankar GJ
Maybe you are looking for
-
HT201303 i forget my question's answer how to reset
Good morning I forget my security question and answers. is someone help me to resolve this issue cause i try all what apple recomond but i am unable to get mail from apple. I follow all steps, normally they have to send reset link to my mail id but i
-
How to declare/recover stolen Mac
my Mac Book Pro was stolen. I have declared the theft to the police station. I am currently traveling in the North of Lebanon and frankly, I think the police has other things to do than look for my laptop 1. where else can I declare this so I have a
-
Wireless Security - DOES NOT WORK?
My problem: AEBS works fine UNLESS I use any Wireless Security. If I set security to WEP, WPA/WPA2 Personal, or WPA2 Personal then the following occurs: -- the AEBS DOES NOT appear as a base station in AirPort Utility -- the Wireless Network DOES app
-
Can I import bookmarks from a different browser on my phone to foxfire?
I just downloaded foxfire and I want to import my bookmarks from CM browser to foxfire, then I will delete CM browser. How do I import the bookmarks? Thanks
-
Problems with trial install...
I downloaded the Office 2013 Pro trial version, but when I went to install, it actually wants to burn a disk. The disc burner in my laptop isn't working - is there not a way to install directly from a download? Thanks!