Using the linetype in Perform
Hi experts,
I am using the FM CATSXT_SIMPLE_TEXT_EDITOR. In this we have CH_TEXT in changing as a line type. I am using this FM at several places and hence i am using the Perform as i want to fill three different tables at three different places where this FM is called. Can any one tell me how can i use this LINE TYPE and pass it to Perform?
Thanks in advance.
Harshad.
Dear Harshad,
Please implement the following code, and let me know if it works,
Thanks,
Roxani
REPORT ZROX .
parameter : t TYPE SYTITLE.
data : t1_fin type CATSXT_LONGTEXT_ITAB .
data : t2 type TXLINE occurs 0 with header line.
data : t11 like ABAPTEXT-line.
data : i(3).
do 10 times.
i = i + 1.
concatenate 'text line' i into t11.
append t11 to t2.
enddo.
perform call_fm tables t2[]
using t .
loop at t2.
write : / t2.
endloop.
*& Form call_fm
text
-->T text
-->T1 text
form call_fm tables t2
using t .
append lines of t2 to t1_fin .
CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
EXPORTING
IM_TITLE = t
IM_DISPLAY_MODE = ' '
IM_START_COLUMN = 10
IM_START_ROW = 10
CHANGING
CH_TEXT = t1_fin
t2[] = t1_fin.
endform. "call_fm
Similar Messages
-
Performance issue when using the same query in a different way
Hello,
I have a performance problem with the statement below when running it with an insert or with execute immediate.
n.b.: This statement could be more optimized, but it is a generated statement.
When I run this statement I get one row back within one second, so there is no performance problem.
select sysdate
,5
,'testje'
,count (1)
,'NL' groupby
from (select 'different (target)' compare_type
,t.id_org_addr id_org_addr -- ID_ORG_ADDR
,t.vpd_country vpd_country -- CTL_COUNTRY
,t.addr_type addr_type -- ADDRESSTYP_COD
from (select *
from (select t.*
from ods.ods_org_addr t
left outer join
m_sy_foreign_key m
on m.vpd_country = t.vpd_country
and m.key_type = 'ORGADDR2'
and m.target_value = t.id_org_addr
where coalesce (t.end_date, to_date ('99991231', 'yyyymmdd')) >= sysdate) /*SGRB*/
where vpd_country = 'NL' /*EGRB*/
) t
where exists
(select null
from (select *
from (select m.target_value id_org_addr
,s.wkp_id_cegedim || '-' || s.adr_id_cegedim || '-' || s.addresstyp_cod id_cegedim
,s.*
from okc_mdl_workplace_address s
left outer join
m_sy_foreign_key m
on m.vpd_country = s.ctl_country
and m.key_type = 'ORGADDR2'
and m.source_value = s.wkp_id_cegedim || '-' || s.adr_id_cegedim || '-' || s.addresstyp_cod
where coalesce (s.end_val_dat, to_date ('99991231', 'yyyymmdd')) >= sysdate) /*SGRB*/
where ctl_country = 'NL' /*EGRB*/
) s
where t.id_org_addr = s.id_org_addr)
minus
select 'different (target)' compare_type
,s.id_org_addr id_org_addr -- ID_ORG_ADDR
,s.ctl_country vpd_country -- CTL_COUNTRY
, (select to_number (l.target_value)
from okc_code_foreign l
where l.source_code_type = 'TYS'
and l.target_code_type = 'ADDRLINKTYPE'
and l.source_value = upper (s.addresstyp_cod)
and l.vpd_country = s.ctl_country)
addr_type -- ADDRESSTYP_COD
from (select *
from (select m.target_value id_org_addr
,s.wkp_id_cegedim || '-' || s.adr_id_cegedim || '-' || s.addresstyp_cod id_cegedim
,s.*
from okc_mdl_workplace_address s
left outer join
m_sy_foreign_key m
on m.vpd_country = s.ctl_country
and m.key_type = 'ORGADDR2'
and m.source_value = s.wkp_id_cegedim || '-' || s.adr_id_cegedim || '-' || s.addresstyp_cod
where coalesce (s.end_val_dat, to_date ('99991231', 'yyyymmdd')) >= sysdate) /*SGRB*/
where ctl_country = 'NL' /*EGRB*/
) s) When I run this statement using a insert by placing
insert into okc_compare_results (
datetime
,compare_tables_id
,compare_target
,record_count
,groupby
) before the statement, then the statement runs about *3 to 4 minutes*, The same is happening when running the select part only using execute immediate.
Below the execution plans of the insert with the select and the select only.
Could somebody tell me what causes the different behavior of the "same" statement and what could I do to avoid this behavior.
The database version is: 11.1.0.7.0
Regards,
Fred.
SQL Statement which produced this data:
select * from table(dbms_xplan.display_cursor ('cuk3uwnxx344q',0 /*3431532430 */))
union all
select * from table(dbms_xplan.display_cursor ('862aq599gfd6n',0/*3531428851 */))
plan_table_output
SQL_ID cuk3uwnxx344q, child number 0
select sysdate ,:"SYS_B_00" ,:"SYS_B_01"
,count (:"SYS_B_02") ,:"SYS_B_03" groupby from ( (select
:"SYS_B_04" compare_type ,t.id_org_addr id_org_addr
-- ID_ORG_ADDR ,t.vpd_country vpd_country --
CTL_COUNTRY ,t.addr_type addr_type -- ADDRESSTYP_COD
from (select * from (select t.*
from ods.ods_org_addr t
left outer join
m_sy_foreign_key m on
m.vpd_country = t.vpd_country ; and
m.key_type = :"SYS_B_05" and
m.target_value = t.id_org_addr ; where
coalesce (t.end_date, to_date (:"SYS_B_06", :"SYS_B_07")) >= sysdate)
/*SGRB*/ where vpd_country = :"SYS_B_08" /*EGRB*/
Plan hash value: 3431532430
Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop
0 SELECT STATEMENT 1772 (100)
1 SORT AGGREGATE 1
2 VIEW 3 1772 (1) 00:00:22
3 MINUS
4 SORT UNIQUE 3 492 1146 (1) 00:00:14
* 5 HASH JOIN OUTER 3 492 1145 (1) 00:00:14
6 NESTED LOOPS
7 NESTED LOOPS 3 408 675 (1) 00:00:09
* 8 HASH JOIN 42 4242 625 (1) 00:00:08
9 PARTITION LIST SINGLE 3375 148K 155 (2) 00:00:02 KEY KEY
* 10 TABLE ACCESS FULL OKC_MDL_WORKPLACE_ADDRESS 3375 148K 155 (2) 00:00:02 KEY KEY
* 11 INDEX RANGE SCAN PK_M_SY_FOREIGN_KEY 49537 2709K 469 (1) 00:00:06
* 12 INDEX UNIQUE SCAN UK_ODS_ORG_ADDR 1 1 (0) 00:00:01
* 13 TABLE ACCESS BY GLOBAL INDEX ROWID ODS_ORG_ADDR 1 35 2 (0) 00:00:01 ROWID ROWID
* 14 INDEX RANGE SCAN PK_M_SY_FOREIGN_KEY 49537 1354K 469 (1) 00:00:06
15 NESTED LOOPS
16 NESTED LOOPS 1 67 9 (12) 00:00:01
17 NESTED LOOPS 1 48 8 (13) 00:00:01
* 18 HASH JOIN 1 23 6 (17) 00:00:01
* 19 TABLE ACCESS BY GLOBAL INDEX ROWID ODS_COUNTRY_SYSTEM 1 11 2 (0) 00:00:01 ROWID ROWID
* 20 INDEX RANGE SCAN PK_ODS_DIVISION_SYSTEM 1 1 (0) 00:00:01
* 21 TABLE ACCESS FULL SY_SOURCE_CODE 8 96 3 (0) 00:00:01
22 TABLE ACCESS BY INDEX ROWID SY_FOREIGN_CODE 1 25 2 (0) 00:00:01
* 23 INDEX RANGE SCAN PK_SY_FOREIGN_CODE 1 1 (0) 00:00:01
* 24 INDEX UNIQUE SCAN PK_SY_TARGET_CODE 1 0 (0)
* 25 TABLE ACCESS BY INDEX ROWID SY_TARGET_CODE 1 19 1 (0) 00:00:01
26 SORT UNIQUE 3375 332K 626 (1) 00:00:08
* 27 HASH JOIN OUTER 3375 332K 625 (1) 00:00:08
28 PARTITION LIST SINGLE 3375 148K 155 (2) 00:00:02 KEY KEY
* 29 TABLE ACCESS FULL OKC_MDL_WORKPLACE_ADDRESS 3375 148K 155 (2) 00:00:02 KEY KEY
* 30 INDEX RANGE SCAN PK_M_SY_FOREIGN_KEY 49537 2709K 469 (1) 00:00:06
Predicate Information (identified by operation id):
5 - access("M"."TARGET_VALUE"="T"."ID_ORG_ADDR" AND "M"."VPD_COUNTRY"="T"."VPD_COUNTRY")
8 - access("M"."SOURCE_VALUE"="S"."WKP_ID_CEGEDIM" :SYS_B_12 S."ADR_ID_CEGEDIM" :SYS_B_13 S."ADDRESSTYP_COD" AND
"M"."VPD_COUNTRY"="S"."CTL_COUNTRY")
10 - filter(COALESCE("S"."END_VAL_DAT",TO_DATE(:SYS_B_14,:SYS_B_15))>=SYSDATE@!)
11 - access("M"."KEY_TYPE"=:SYS_B_11 AND "M"."VPD_COUNTRY"=:SYS_B_16)
12 - access("T"."ID_ORG_ADDR"="M"."TARGET_VALUE")
13 - filter(("T"."VPD_COUNTRY"=:SYS_B_08 AND COALESCE("T"."END_DATE",TO_DATE(:SYS_B_06,:SYS_B_07))>=SYSDATE@!))
14 - access("M"."KEY_TYPE"=:SYS_B_05 AND "M"."VPD_COUNTRY"=:SYS_B_08)
18 - access("CS"."ID_SYSTEM"="SK"."ID_SOURCE_SYSTEM")
19 - filter("CS"."SYSTEM_TYPE"=1)
20 - access("CS"."VPD_COUNTRY"=:B1 AND "CS"."EXP_IMP_TYPE"='I')
filter("CS"."EXP_IMP_TYPE"='I')
21 - filter("SK"."CODE_TYPE"=:SYS_B_18)
23 - access("FK"."ID_SOURCE_CODE"="SK"."ID_SOURCE_CODE" AND "FK"."SOURCE_VALUE"=UPPER(:B1) AND
"CS"."VPD_COUNTRY"="FK"."VPD_COUNTRY")
filter(("FK"."VPD_COUNTRY"=:B1 AND "FK"."SOURCE_VALUE"=UPPER(:B2) AND "CS"."VPD_COUNTRY"="FK"."VPD_COUNTRY"))
24 - access("FK"."ID_TARGET_CODE"="TK"."ID_TARGET_CODE")
25 - filter("TK"."CODE_TYPE"=:SYS_B_19)
27 - access("M"."SOURCE_VALUE"="S"."WKP_ID_CEGEDIM" :SYS_B_23 S."ADR_ID_CEGEDIM" :SYS_B_24 S."ADDRESSTYP_COD" AND
"M"."VPD_COUNTRY"="S"."CTL_COUNTRY")
29 - filter(COALESCE("S"."END_VAL_DAT",TO_DATE(:SYS_B_25,:SYS_B_26))>=SYSDATE@!)
30 - access("M"."KEY_TYPE"=:SYS_B_22 AND "M"."VPD_COUNTRY"=:SYS_B_27)
SQL_ID 862aq599gfd6n, child number 0
insert into okc_compare_results ( datetime
,compare_tables_id ,compare_target
,record_count ,groupby )
select sysdate ,:"SYS_B_00" ,:"SYS_B_01"
,count (:"SYS_B_02") ,:"SYS_B_03" groupby from ( (select
:"SYS_B_04" compare_type ,t.id_org_addr id_org_addr
-- ID_ORG_ADDR ,t.vpd_country vpd_country --
CTL_COUNTRY ,t.addr_type addr_type -- ADDRESSTYP_COD
from (select * from (select t.*
from ods.ods_org_addr t
left outer join
m_sy_foreign_key m on
m.vpd_country = t.vpd_country ; and
m.key_type = :"SYS_B_05" and
m.target_value = t.id_org_addr
Plan hash value: 3531428851
Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop
0 INSERT STATEMENT 1646 (100)
1 LOAD TABLE CONVENTIONAL
2 SORT AGGREGATE 1
3 VIEW 1 1646 (1) 00:00:20
4 MINUS
5 SORT UNIQUE 1 163
6 NESTED LOOPS OUTER 1 163 1067 (1) 00:00:13
7 NESTED LOOPS 1 135 599 (1) 00:00:08
* 8 HASH JOIN 19 1919 577 (2) 00:00:07
9 PARTITION LIST SINGLE 1535 69075 107 (4) 00:00:02 KEY KEY
* 10 TABLE ACCESS FULL OKC_MDL_WORKPLACE_ADDRESS 1535 69075 107 (4) 00:00:02 KEY KEY
* 11 INDEX RANGE SCAN PK_M_SY_FOREIGN_KEY 49537 2709K 469 (1) 00:00:06
* 12 TABLE ACCESS BY GLOBAL INDEX ROWID ODS_ORG_ADDR 1 34 2 (0) 00:00:01 ROWID ROWID
* 13 INDEX UNIQUE SCAN UK_ODS_ORG_ADDR 25 1 (0) 00:00:01
* 14 INDEX RANGE SCAN PK_M_SY_FOREIGN_KEY 1 28 468 (1) 00:00:06
15 NESTED LOOPS
16 NESTED LOOPS 1 67 8 (0) 00:00:01
17 NESTED LOOPS 1 48 7 (0) 00:00:01
18 NESTED LOOPS 1 23 5 (0) 00:00:01
* 19 TABLE ACCESS BY GLOBAL INDEX ROWID ODS_COUNTRY_SYSTEM 1 11 2 (0) 00:00:01 ROWID ROWID
* 20 INDEX RANGE SCAN PK_ODS_DIVISION_SYSTEM 1 1 (0) 00:00:01
* 21 TABLE ACCESS FULL SY_SOURCE_CODE 1 12 3 (0) 00:00:01
22 TABLE ACCESS BY INDEX ROWID SY_FOREIGN_CODE 1 25 2 (0) 00:00:01
* 23 INDEX RANGE SCAN PK_SY_FOREIGN_CODE 1 1 (0) 00:00:01
* 24 INDEX UNIQUE SCAN PK_SY_TARGET_CODE 1 0 (0)
* 25 TABLE ACCESS BY INDEX ROWID SY_TARGET_CODE 1 19 1 (0) 00:00:01
26 SORT UNIQUE 1535 151K
* 27 HASH JOIN OUTER 1535 151K 577 (2) 00:00:07
28 PARTITION LIST SINGLE 1535 69075 107 (4) 00:00:02 KEY KEY
* 29 TABLE ACCESS FULL OKC_MDL_WORKPLACE_ADDRESS 1535 69075 107 (4) 00:00:02 KEY KEY
* 30 INDEX RANGE SCAN PK_M_SY_FOREIGN_KEY 49537 2709K 469 (1) 00:00:06
Predicate Information (identified by operation id):
8 - access("M"."SOURCE_VALUE"="S"."WKP_ID_CEGEDIM" :SYS_B_12 S."ADR_ID_CEGEDIM" :SYS_B_13 S."ADDRESSTYP_COD" AND
"M"."VPD_COUNTRY"="S"."CTL_COUNTRY")
10 - filter(COALESCE("S"."END_VAL_DAT",TO_DATE(:SYS_B_14,:SYS_B_15))>=SYSDATE@!)
11 - access("M"."KEY_TYPE"=:SYS_B_11 AND "M"."VPD_COUNTRY"=:SYS_B_16)
12 - filter((COALESCE("T"."END_DATE",TO_DATE(:SYS_B_06,:SYS_B_07))>=SYSDATE@! AND "T"."VPD_COUNTRY"=:SYS_B_08))
13 - access("T"."ID_ORG_ADDR"="M"."TARGET_VALUE")
14 - access("M"."KEY_TYPE"=:SYS_B_05 AND "M"."VPD_COUNTRY"=:SYS_B_08 AND "M"."TARGET_VALUE"="T"."ID_ORG_ADDR")
filter("M"."TARGET_VALUE"="T"."ID_ORG_ADDR")
19 - filter("CS"."SYSTEM_TYPE"=1)
20 - access("CS"."VPD_COUNTRY"=:B1 AND "CS"."EXP_IMP_TYPE"='I')
filter("CS"."EXP_IMP_TYPE"='I')
21 - filter(("SK"."CODE_TYPE"=:SYS_B_18 AND "CS"."ID_SYSTEM"="SK"."ID_SOURCE_SYSTEM"))
23 - access("FK"."ID_SOURCE_CODE"="SK"."ID_SOURCE_CODE" AND "FK"."SOURCE_VALUE"=UPPER(:B1) AND
"CS"."VPD_COUNTRY"="FK"."VPD_COUNTRY")
filter(("FK"."VPD_COUNTRY"=:B1 AND "FK"."SOURCE_VALUE"=UPPER(:B2) AND "CS"."VPD_COUNTRY"="FK"."VPD_COUNTRY"))
24 - access("FK"."ID_TARGET_CODE"="TK"."ID_TARGET_CODE")
25 - filter("TK"."CODE_TYPE"=:SYS_B_19)
27 - access("M"."SOURCE_VALUE"="S"."WKP_ID_CEGEDIM" :SYS_B_23 S."ADR_ID_CEGEDIM" :SYS_B_24 S."ADDRESSTYP_COD" AND
"M"."VPD_COUNTRY"="S"."CTL_COUNTRY")
29 - filter(COALESCE("S"."END_VAL_DAT",TO_DATE(:SYS_B_25,:SYS_B_26))>=SYSDATE@!)
30 - access("M"."KEY_TYPE"=:SYS_B_22 AND "M"."VPD_COUNTRY"=:SYS_B_27)Edited by: BluShadow on 20-Jun-2012 10:30
added {noformat}{noformat} tags for readability. Please read {message:id=9360002} and learn to do this yourself.yes, all the used tables are analyzed.
Thanks, for pointing to the metalink bug, I have also searched in metalink, but didn't find this bug.
I have a little bit more information about the problem.
I use the following select (now in a readable format)
select count (1)
from ( (select 'different (target)' compare_type
,t.id_org_addr id_org_addr -- ID_ORG_ADDR
,t.vpd_country vpd_country -- CTL_COUNTRY
,t.addr_type addr_type -- ADDRESSTYP_COD
from (select *
from (select t.*
from ods.ods_org_addr t
left outer join
m_sy_foreign_key m
on m.vpd_country = t.vpd_country
and m.key_type = 'ORGADDR2'
and m.target_value = t.id_org_addr
where coalesce (t.end_date, to_date ('99991231', 'yyyymmdd')) >= sysdate) /*SGRB*/
where vpd_country = 'NL' /*EGRB*/
) t
where exists
(select null
from (select *
from (select m.target_value id_org_addr
,s.wkp_id_cegedim || '-' || s.adr_id_cegedim || '-' || s.addresstyp_cod id_cegedim
,s.*
from okc_mdl_workplace_address s
left outer join
m_sy_foreign_key m
on m.vpd_country = s.ctl_country
and m.key_type = 'ORGADDR2'
and m.source_value = s.wkp_id_cegedim || '-' || s.adr_id_cegedim || '-' || s.addresstyp_cod
where coalesce (s.end_val_dat, to_date ('99991231', 'yyyymmdd')) >= sysdate) /*SGRB*/
where ctl_country = 'NL' /*EGRB*/
) s
where t.id_org_addr = s.id_org_addr)
minus
select 'different (target)' compare_type
,s.id_org_addr id_org_addr -- ID_ORG_ADDR
,s.ctl_country vpd_country -- CTL_COUNTRY
, (select to_number (l.target_value)
from okc_code_foreign l
where l.source_code_type = 'TYS'
and l.target_code_type = 'ADDRLINKTYPE'
and l.source_value = upper (s.addresstyp_cod)
and l.vpd_country = s.ctl_country)
addr_type -- ADDRESSTYP_COD
from (select *
from (select m.target_value id_org_addr
,s.wkp_id_cegedim || '-' || s.adr_id_cegedim || '-' || s.addresstyp_cod id_cegedim
,s.*
from okc_mdl_workplace_address s
left outer join
m_sy_foreign_key m
on m.vpd_country = s.ctl_country
and m.key_type = 'ORGADDR2'
and m.source_value = s.wkp_id_cegedim || '-' || s.adr_id_cegedim || '-' || s.addresstyp_cod
where coalesce (s.end_val_dat, to_date ('99991231', 'yyyymmdd')) >= sysdate) /*SGRB*/
where ctl_country = 'NL' /*EGRB*/
) s)) The select is executed in 813 msecs
When I execute the same select using execute immediate like:
declare
ln_count number;
begin
execute immediate q'[<select statement>]' into ln_count;
end;This takes 3:56 minutes to complete.
When I change the second coalesce part (the one within the exists) in the flowing way:
the part
coalesce (s.end_val_dat, to_date ('99991231', 'yyyymmdd')) >= sysdate
is replaced by
s.end_val_dat >= sysdate or s.end_val_dat is nullthen the execution time is even faster (560 msecs) in both, the plain select and the select using the execute immediate. -
For one Urgent Change while performing the one of the Approval before changing the status to 'To Be Tested'
We are getting below error.
The system does not recognize any changes using the CTS WBS BOM in the development system. The transaction is therefore incorrect or the status was reset by the system.
COuld anyone please help us to know, How it can be resolved?
We also have this below error.
System Response
If the PPF action is a condition check, the condition is initially considered as not met, and leads to another warning, an error message, or status reset, depending on the configuration.
If the PPF action is the execution of a task in the task list, and the exception is critical, there is another error message in the document.
Procedure
The condition cannot be met until the cause is removed. Analyze all messages in the transaction application log.
Procedure for System Administration
Analyze any other messages in the task list application log, and the entries for the object /TMWFLOW/CMSCV
Additional Information:
System cancel RFC destination SM_UK4CLNT005_TRUSTED, Call TR_READ_COMM:
No authorization to log on as a trusted system (Tr usted RC=0).
/TMWFLOW/TU_GET_REQUEST_REMOTE:E:/TMWFLOW/TRACK_N:107
For above error Table /TMWFLOW/REP_DATA_FLOWwas refreshed as well but still the same error.If you are in Test System, you can use function module AA_AFABER_DELETE to totally delete the depreciation area (tcode SE37, specify chart of depreciation and depreciation area), After that recreate your depreciation area and run AFBN. But before you do that, have you created a retirement transaction type that limits the posting on your new depreciation area? If not create one.
Hope this helps.
Thanks!
Jhero -
Index not getting used in the query(Query performance improvement)
Hi,
I am using oracle 10g version and have this query:
select distinct bk.name "Book Name",
fs.feed_description "Feed Name",
fbs.cob_date "Cob",
at.description "Data Type",
ah.user_name " User",
ah.comments "Comments",
ah.time_draft
from Action_type at,
action_history ah,
sensitivity_audit sa,
logical_entity le,
feed_static fs,
feed_book_status fbs,
feed_instance fi,
marsnode bk
where at.description = 'Regress Positions'
and fbs.cob_date BETWEEN '01 Feb 2011' AND '08 Feb 2011'
and fi.most_recent = 'Y'
and bk.close_date is null
and ah.time_draft = 'after'
and sa.close_action_id is null
and le.close_action_id is null
and at.action_type_id = ah.action_type_id
and ah.action_id = sa.create_action_id
and le.logical_entity_id = sa.type_id
and sa.feed_id = fs.feed_id
and sa.book_id = bk.node_id
and sa.feed_instance_id = fi.feed_instance_id
and fbs.feed_instance_id = fi.feed_instance_id
and fi.feed_id = fs.feed_id
union
select distinct bk.name "Book Name",
fs.feed_description "Feed Name",
fbs.cob_date "Cob",
at.description "Data Type",
ah.user_name " User",
ah.comments "Comments",
ah.time_draft
from feed_book_status fbs,
marsnode bk,
feed_instance fi,
feed_static fs,
feed_book_status_history fbsh,
Action_type at,
Action_history ah
where fbs.cob_date BETWEEN '01 Feb 2011' AND '08 Feb 2011'
and ah.action_type_id = 103
and bk.close_date is null
and ah.time_draft = 'after'
-- and ah.action_id = fbs.action_id
and fbs.book_id = bk.node_id
and fbs.book_id = fbsh.book_id
and fbs.feed_instance_id = fi.feed_instance_id
and fi.feed_id = fs.feed_id
and fbsh.create_action_id = ah.action_id
and at.action_type_id = ah.action_type_id
union
select distinct bk.name "Book Name",
fs.feed_description "Feed Name",
fbs.cob_date "Cob",
at.description "Data Type",
ah.user_name " User",
ah.comments "Comments",
ah.time_draft
from feed_book_status fbs,
marsnode bk,
feed_instance fi,
feed_static fs,
feed_book_status_history fbsh,
Action_type at,
Action_history ah
where fbs.cob_date BETWEEN '01 Feb 2011' AND '08 Feb 2011'
and ah.action_type_id = 101
and bk.close_date is null
and ah.time_draft = 'after'
and fbs.book_id = bk.node_id
and fbs.book_id = fbsh.book_id
and fbs.feed_instance_id = fi.feed_instance_id
and fi.feed_id = fs.feed_id
and fbsh.create_action_id = ah.action_id
and at.action_type_id = ah.action_type_id;This is the execution plan
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
| 0 | SELECT STATEMENT | | 231 | 43267 | 104K (85)|
| 1 | SORT UNIQUE | | 231 | 43267 | 104K (85)|
| 2 | UNION-ALL | | | | |
| 3 | NESTED LOOPS | | 1 | 257 | 19540 (17)|
| 4 | NESTED LOOPS | | 1 | 230 | 19539 (17)|
| 5 | NESTED LOOPS | | 1 | 193 | 19537 (17)|
| 6 | NESTED LOOPS | | 1 | 152 | 19534 (17)|
|* 7 | HASH JOIN | | 213 | 26625 | 19530 (17)|
|* 8 | TABLE ACCESS FULL | LOGICAL_ENTITY | 12 | 264 | 2 (0)|
|* 9 | HASH JOIN | | 4267 | 429K| 19527 (17)|
|* 10 | HASH JOIN | | 3602 | 90050 | 1268 (28)|
|* 11 | INDEX RANGE SCAN | IDX_FBS_CD_FII_BI | 3602 | 46826 | 22 (5)|
|* 12 | TABLE ACCESS FULL | FEED_INSTANCE | 335K| 3927K| 1217 (27)|
|* 13 | TABLE ACCESS FULL | SENSITIVITY_AUDIT | 263K| 19M| 18236 (17)|
| 14 | TABLE ACCESS BY INDEX ROWID | FEED_STATIC | 1 | 27 | 1 (0)|
|* 15 | INDEX UNIQUE SCAN | IDX_FEED_STATIC_FI | 1 | | 0 (0)|
|* 16 | TABLE ACCESS BY INDEX ROWID | MARSNODE | 1 | 41 | 3 (0)|
|* 17 | INDEX RANGE SCAN | PK_MARSNODE | 3 | | 2 (0)|
|* 18 | TABLE ACCESS BY INDEX ROWID | ACTION_HISTORY | 1 | 37 | 2 (0)|
|* 19 | INDEX UNIQUE SCAN | PK_ACTION_HISTORY | 1 | | 1 (0)|
|* 20 | TABLE ACCESS BY INDEX ROWID | ACTION_TYPE | 1 | 27 | 1 (0)|
|* 21 | INDEX UNIQUE SCAN | PK_ACTION_TYPE | 1 | | 0 (0)|
|* 22 | TABLE ACCESS BY INDEX ROWID | MARSNODE | 1 | 41 | 3 (0)|
| 23 | NESTED LOOPS | | 115 | 21505 | 42367 (28)|
|* 24 | HASH JOIN | | 114 | 16644 | 42023 (28)|
| 25 | NESTED LOOPS | | 114 | 13566 | 42007 (28)|
|* 26 | HASH JOIN | | 114 | 12426 | 41777 (28)|
|* 27 | HASH JOIN | | 957 | 83259 | 41754 (28)|
|* 28 | TABLE ACCESS FULL | ACTION_HISTORY | 2480 | 91760 | 30731 (28)|
| 29 | NESTED LOOPS | | 9570K| 456M| 10234 (21)|
| 30 | TABLE ACCESS BY INDEX ROWID| ACTION_TYPE | 1 | 27 | 1 (0)|
|* 31 | INDEX UNIQUE SCAN | PK_ACTION_TYPE | 1 | | 0 (0)|
| 32 | TABLE ACCESS FULL | FEED_BOOK_STATUS_HISTORY | 9570K| 209M| 10233 (21)|
|* 33 | INDEX RANGE SCAN | IDX_FBS_CD_FII_BI | 3602 | 79244 | 22 (5)|
| 34 | TABLE ACCESS BY INDEX ROWID | FEED_INSTANCE | 1 | 10 | 2 (0)|
|* 35 | INDEX UNIQUE SCAN | PK_FEED_INSTANCE | 1 | | 1 (0)|
| 36 | TABLE ACCESS FULL | FEED_STATIC | 2899 | 78273 | 16 (7)|
|* 37 | INDEX RANGE SCAN | PK_MARSNODE | 1 | | 2 (0)|
|* 38 | TABLE ACCESS BY INDEX ROWID | MARSNODE | 1 | 41 | 3 (0)|
| 39 | NESTED LOOPS | | 115 | 21505 | 42367 (28)|
|* 40 | HASH JOIN | | 114 | 16644 | 42023 (28)|
| 41 | NESTED LOOPS | | 114 | 13566 | 42007 (28)|
|* 42 | HASH JOIN | | 114 | 12426 | 41777 (28)|
|* 43 | HASH JOIN | | 957 | 83259 | 41754 (28)|
|* 44 | TABLE ACCESS FULL | ACTION_HISTORY | 2480 | 91760 | 30731 (28)|
| 45 | NESTED LOOPS | | 9570K| 456M| 10234 (21)|
| 46 | TABLE ACCESS BY INDEX ROWID| ACTION_TYPE | 1 | 27 | 1 (0)|
|* 47 | INDEX UNIQUE SCAN | PK_ACTION_TYPE | 1 | | 0 (0)|
| 48 | TABLE ACCESS FULL | FEED_BOOK_STATUS_HISTORY | 9570K| 209M| 10233 (21)|
|* 49 | INDEX RANGE SCAN | IDX_FBS_CD_FII_BI | 3602 | 79244 | 22 (5)|
| 50 | TABLE ACCESS BY INDEX ROWID | FEED_INSTANCE | 1 | 10 | 2 (0)|
|* 51 | INDEX UNIQUE SCAN | PK_FEED_INSTANCE | 1 | | 1 (0)|
| 52 | TABLE ACCESS FULL | FEED_STATIC | 2899 | 78273 | 16 (7)|
|* 53 | INDEX RANGE SCAN | PK_MARSNODE | 1 | | 2 (0)|
------------------------------------------------------------------------------------------------------and the predicate info
Predicate Information (identified by operation id):
7 - access("LE"."LOGICAL_ENTITY_ID"="SA"."TYPE_ID")
8 - filter("LE"."CLOSE_ACTION_ID" IS NULL)
9 - access("SA"."FEED_INSTANCE_ID"="FI"."FEED_INSTANCE_ID")
10 - access("FBS"."FEED_INSTANCE_ID"="FI"."FEED_INSTANCE_ID")
11 - access("FBS"."COB_DATE">=TO_DATE(' 2011-02-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"FBS"."COB_DATE"<=TO_DATE(' 2011-02-08 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
12 - filter("FI"."MOST_RECENT"='Y')
13 - filter("SA"."CLOSE_ACTION_ID" IS NULL)
15 - access("FI"."FEED_ID"="FS"."FEED_ID")
filter("SA"."FEED_ID"="FS"."FEED_ID")
16 - filter("BK"."CLOSE_DATE" IS NULL)
17 - access("SA"."BOOK_ID"="BK"."NODE_ID")
18 - filter("AH"."TIME_DRAFT"='after')
19 - access("AH"."ACTION_ID"="SA"."CREATE_ACTION_ID")
20 - filter("AT"."DESCRIPTION"='Regress Positions')
21 - access("AT"."ACTION_TYPE_ID"="AH"."ACTION_TYPE_ID")
22 - filter("BK"."CLOSE_DATE" IS NULL)
24 - access("FI"."FEED_ID"="FS"."FEED_ID")
26 - access("FBS"."BOOK_ID"="FBSH"."BOOK_ID")
27 - access("FBSH"."CREATE_ACTION_ID"="AH"."ACTION_ID" AND
"AT"."ACTION_TYPE_ID"="AH"."ACTION_TYPE_ID")
28 - filter("AH"."ACTION_TYPE_ID"=103 AND "AH"."TIME_DRAFT"='after')
31 - access("AT"."ACTION_TYPE_ID"=103)
33 - access("FBS"."COB_DATE">=TO_DATE(' 2011-02-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"FBS"."COB_DATE"<=TO_DATE(' 2011-02-08 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
35 - access("FBS"."FEED_INSTANCE_ID"="FI"."FEED_INSTANCE_ID")
37 - access("FBS"."BOOK_ID"="BK"."NODE_ID")
38 - filter("BK"."CLOSE_DATE" IS NULL)
40 - access("FI"."FEED_ID"="FS"."FEED_ID")
42 - access("FBS"."BOOK_ID"="FBSH"."BOOK_ID")
43 - access("FBSH"."CREATE_ACTION_ID"="AH"."ACTION_ID" AND
"AT"."ACTION_TYPE_ID"="AH"."ACTION_TYPE_ID")
44 - filter("AH"."ACTION_TYPE_ID"=101 AND "AH"."TIME_DRAFT"='after')
47 - access("AT"."ACTION_TYPE_ID"=101)
49 - access("FBS"."COB_DATE">=TO_DATE(' 2011-02-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"FBS"."COB_DATE"<=TO_DATE(' 2011-02-08 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
51 - access("FBS"."FEED_INSTANCE_ID"="FI"."FEED_INSTANCE_ID")
53 - access("FBS"."BOOK_ID"="BK"."NODE_ID")
Note
- 'PLAN_TABLE' is old versionIn this query, mainly the ACTION_HISTORY and FEED_BOOK_STATUS_HISTORY tables are getting accessed fullly though there are indexes createdon them like this
ACTION_HISTORY
ACTION_ID column Unique index
FEED_BOOK_STATUS_HISTORY
(FEED_INSTANCE_ID, BOOK_ID, COB_DATE, VERSION) composite indexI tried all the best combinations however the indexes are not getting used anywhere.
Could you please suggest some way so the query will perform better way.
Thanks,
AashishHi Mohammed,
This is what I got after your method of execution plan
SQL_ID 4vmc8rzgaqgka, child number 0
select distinct bk.name "Book Name" , fs.feed_description "Feed Name" , fbs.cob_date
"Cob" , at.description "Data Type" , ah.user_name " User" , ah.comments "Comments"
, ah.time_draft from Action_type at, action_history ah, sensitivity_audit sa, logical_entity
le, feed_static fs, feed_book_status fbs, feed_instance fi, marsnode bk where at.description =
'Regress Positions' and fbs.cob_date BETWEEN '01 Feb 2011' AND '08 Feb 2011' and
fi.most_recent = 'Y' and bk.close_date is null and ah.time_draft='after' and
sa.close_action_id is null and le.close_action_id is null and at.action_type_id =
ah.action_type_id and ah.action_id=sa.create_action_id and le.logical_entity_id = sa.type_id
and sa.feed_id = fs.feed_id and sa.book_id = bk.node_id and sa.feed_instance_id =
fi.feed_instance_id and fbs.feed_instance_id = fi.feed_instance_id and fi.feed_id = fs.feed_id
union select distinct bk.name "Book Name" , fs.
Plan hash value: 1006571916
| Id | Operation | Name | E-Rows | OMem | 1Mem | Used-Mem |
| 1 | SORT UNIQUE | | 231 | 6144 | 6144 | 6144 (0)|
| 2 | UNION-ALL | | | | | |
| 3 | NESTED LOOPS | | 1 | | | |
| 4 | NESTED LOOPS | | 1 | | | |
| 5 | NESTED LOOPS | | 1 | | | |
| 6 | NESTED LOOPS | | 1 | | | |
|* 7 | HASH JOIN | | 213 | 1236K| 1236K| 1201K (0)|
|* 8 | TABLE ACCESS FULL | LOGICAL_ENTITY | 12 | | | |
|* 9 | HASH JOIN | | 4267 | 1023K| 1023K| 1274K (0)|
|* 10 | HASH JOIN | | 3602 | 1095K| 1095K| 1296K (0)|
|* 11 | INDEX RANGE SCAN | IDX_FBS_CD_FII_BI | 3602 | | | |
|* 12 | TABLE ACCESS FULL | FEED_INSTANCE | 335K| | | |
|* 13 | TABLE ACCESS FULL | SENSITIVITY_AUDIT | 263K| | | |
| 14 | TABLE ACCESS BY INDEX ROWID | FEED_STATIC | 1 | | | |
|* 15 | INDEX UNIQUE SCAN | IDX_FEED_STATIC_FI | 1 | | | |
|* 16 | TABLE ACCESS BY INDEX ROWID | MARSNODE | 1 | | | |
|* 17 | INDEX RANGE SCAN | PK_MARSNODE | 3 | | | |
|* 18 | TABLE ACCESS BY INDEX ROWID | ACTION_HISTORY | 1 | | | |
|* 19 | INDEX UNIQUE SCAN | PK_ACTION_HISTORY | 1 | | | |
|* 20 | TABLE ACCESS BY INDEX ROWID | ACTION_TYPE | 1 | | | |
|* 21 | INDEX UNIQUE SCAN | PK_ACTION_TYPE | 1 | | | |
|* 22 | TABLE ACCESS BY INDEX ROWID | MARSNODE | 1 | | | |
| 23 | NESTED LOOPS | | 115 | | | |
|* 24 | HASH JOIN | | 114 | 809K| 809K| 817K (0)|
| 25 | NESTED LOOPS | | 114 | | | |
|* 26 | HASH JOIN | | 114 | 868K| 868K| 1234K (0)|
|* 27 | HASH JOIN | | 957 | 933K| 933K| 1232K (0)|
|* 28 | TABLE ACCESS FULL | ACTION_HISTORY | 2480 | | | |
| 29 | NESTED LOOPS | | 9570K| | | |
| 30 | TABLE ACCESS BY INDEX ROWID| ACTION_TYPE | 1 | | | |
|* 31 | INDEX UNIQUE SCAN | PK_ACTION_TYPE | 1 | | | |
| 32 | TABLE ACCESS FULL | FEED_BOOK_STATUS_HISTORY | 9570K| | | |
|* 33 | INDEX RANGE SCAN | IDX_FBS_CD_FII_BI | 3602 | | | |
| 34 | TABLE ACCESS BY INDEX ROWID | FEED_INSTANCE | 1 | | | |
|* 35 | INDEX UNIQUE SCAN | PK_FEED_INSTANCE | 1 | | | |
| 36 | TABLE ACCESS FULL | FEED_STATIC | 2899 | | | |
|* 37 | INDEX RANGE SCAN | PK_MARSNODE | 1 | | | |
|* 38 | TABLE ACCESS BY INDEX ROWID | MARSNODE | 1 | | | |
| 39 | NESTED LOOPS | | 115 | | | |
|* 40 | HASH JOIN | | 114 | 743K| 743K| 149K (0)|
| 41 | NESTED LOOPS | | 114 | | | |
|* 42 | HASH JOIN | | 114 | 766K| 766K| 208K (0)|
|* 43 | HASH JOIN | | 957 | 842K| 842K| 204K (0)|
|* 44 | TABLE ACCESS FULL | ACTION_HISTORY | 2480 | | | |
| 45 | NESTED LOOPS | | 9570K| | | |
| 46 | TABLE ACCESS BY INDEX ROWID| ACTION_TYPE | 1 | | | |
|* 47 | INDEX UNIQUE SCAN | PK_ACTION_TYPE | 1 | | | |
| 48 | TABLE ACCESS FULL | FEED_BOOK_STATUS_HISTORY | 9570K| | | |
|* 49 | INDEX RANGE SCAN | IDX_FBS_CD_FII_BI | 3602 | | | |
| 50 | TABLE ACCESS BY INDEX ROWID | FEED_INSTANCE | 1 | | | |
|* 51 | INDEX UNIQUE SCAN | PK_FEED_INSTANCE | 1 | | | |
| 52 | TABLE ACCESS FULL | FEED_STATIC | 2899 | | | |
|* 53 | INDEX RANGE SCAN | PK_MARSNODE | 1 | | | |
Predicate Information (identified by operation id):
7 - access("LE"."LOGICAL_ENTITY_ID"="SA"."TYPE_ID")
8 - filter("LE"."CLOSE_ACTION_ID" IS NULL)
9 - access("SA"."FEED_INSTANCE_ID"="FI"."FEED_INSTANCE_ID")
10 - access("FBS"."FEED_INSTANCE_ID"="FI"."FEED_INSTANCE_ID")
11 - access("FBS"."COB_DATE">=TO_DATE(' 2011-02-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"FBS"."COB_DATE"<=TO_DATE(' 2011-02-08 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
12 - filter("FI"."MOST_RECENT"='Y')
13 - filter("SA"."CLOSE_ACTION_ID" IS NULL)
15 - access("FI"."FEED_ID"="FS"."FEED_ID")
filter("SA"."FEED_ID"="FS"."FEED_ID")
16 - filter("BK"."CLOSE_DATE" IS NULL)
17 - access("SA"."BOOK_ID"="BK"."NODE_ID")
18 - filter("AH"."TIME_DRAFT"='after')
19 - access("AH"."ACTION_ID"="SA"."CREATE_ACTION_ID")
20 - filter("AT"."DESCRIPTION"='Regress Positions')
21 - access("AT"."ACTION_TYPE_ID"="AH"."ACTION_TYPE_ID")
22 - filter("BK"."CLOSE_DATE" IS NULL)
24 - access("FI"."FEED_ID"="FS"."FEED_ID")
26 - access("FBS"."BOOK_ID"="FBSH"."BOOK_ID")
27 - access("FBSH"."CREATE_ACTION_ID"="AH"."ACTION_ID" AND
"AT"."ACTION_TYPE_ID"="AH"."ACTION_TYPE_ID")
28 - filter(("AH"."ACTION_TYPE_ID"=103 AND "AH"."TIME_DRAFT"='after'))
31 - access("AT"."ACTION_TYPE_ID"=103)
33 - access("FBS"."COB_DATE">=TO_DATE(' 2011-02-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"FBS"."COB_DATE"<=TO_DATE(' 2011-02-08 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
35 - access("FBS"."FEED_INSTANCE_ID"="FI"."FEED_INSTANCE_ID")
37 - access("FBS"."BOOK_ID"="BK"."NODE_ID")
38 - filter("BK"."CLOSE_DATE" IS NULL)
40 - access("FI"."FEED_ID"="FS"."FEED_ID")
42 - access("FBS"."BOOK_ID"="FBSH"."BOOK_ID")
43 - access("FBSH"."CREATE_ACTION_ID"="AH"."ACTION_ID" AND
"AT"."ACTION_TYPE_ID"="AH"."ACTION_TYPE_ID")
44 - filter(("AH"."ACTION_TYPE_ID"=101 AND "AH"."TIME_DRAFT"='after'))
47 - access("AT"."ACTION_TYPE_ID"=101)
49 - access("FBS"."COB_DATE">=TO_DATE(' 2011-02-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"FBS"."COB_DATE"<=TO_DATE(' 2011-02-08 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
51 - access("FBS"."FEED_INSTANCE_ID"="FI"."FEED_INSTANCE_ID")
53 - access("FBS"."BOOK_ID"="BK"."NODE_ID")
Note
- Warning: basic plan statistics not available. These are only collected when:
* hint 'gather_plan_statistics' is used for the statement or
* parameter 'statistics_level' is set to 'ALL', at session or system level
122 rows selected.
Elapsed: 00:00:02.18The action_type_id column is of NUMBER type. -
I have a situation where I read data into a set of collections (let's assume 10,000 records and an emp_no collection).
I then process each record in a for loop. Based on conditions, a subsequent query is issued to one of two tables:
For i in emp_no.first .. emp_no.last loop
<<processing>>
if <<some condition>> then
select emp_age into age from tab_a where employee_number=emp_no(i);
else
select spouse_age into age from tab_b
where employee_number=emp_no(i) and {other conditions};
end if;
age_array(i) := age;
<<processing>>
end loop;
after the additional fields are retrieved, processing continues using the retrived data.
<<additional processing>>
At the end of the processing I want to update a table's records given the values calculated during processing
ForAll i in emp_no.first .. emp_no.last
Update retirement Set age := age_array(i) ......
where employee_number = emp_no(i);
I imagine the single select queries in the loop structure will cause a lot of context switches between PL/SQL and SQL which will significantly decrease performance.
After some review of the Oraclewebsite I found the TABLE function. It appears I can use this to change my routine to a more efficient bulk processing structure. Something like:
-- In the loop build a collection of emp_no's associated to each query
For i in emp_no.first .. emp_no.last loop
<<processing>>
if emp_no(i) is even then
tab_a_emp_no_array.extend;
tab_a_emp_no_array(tab_a_emp_no_array.last) := emp_no(i);
else
tab_b_emp_no_array.extend;
tab_b_emp_no_array(tab_a_emp_no_array.last) := emp_no(i);
end if;
<<processing>>
end loop;
--After the loop use a Select... Bulk Collect Into statement with a where condition that references the collection values
Select emp_no, emp_age
bulk collect into emp_no_a, age_a
from tab_a
where employee_number in (select column_value from table(tab_a_emp_no_array));
Select emp_no, spouse_age
bulk collect into emp_no_b, age_b
from tab_b
where employee_number in (select column_value from table(tab_b_emp_no_array));
Using the emp_no_a and emp_no_b the age values can be reassociated with the correct employee for further processing.
I HAVE THREE CONCERNS:
1. Am I understanding and using the TABLE function correctly? I don't think "pipelined processing" would help in this situation, correct?
2. I may end up with an IN clause that has thousands of elements. Will this perform poorly and eliminate any performance gains obtained from the bulk collect? Would "where exists (select 1 from table(tab_a_emp_no_array) where column_value=employee_number)" work any better?
3. Is there a better way to solve this issue of optimizing performance when various tables are conditionally queried during a loop?
I hope my issue is clear (obviously the code isn't accurate) and I thank you in advance for any insights!
Peace,
LarryNo.
I will repeat one of Tom Kytes' mantras here
1 when you can do it in 1 SQL statement, you should do it in SQL
2 When you can not do it in SQL, you should do it in PL/SQL
3 When you can not do in in PL/SQL, you should do it in Java
Which means: You should things non-procedurally as often as possible. Quite often people resort too early to 3GL strategies.
update inside a loop raises a red flag, especially if there would have been a commit inside this loop. This means you are not only into slow-by-slow prtogramming, but also increases the possibility of ora-15555 errors.
Sybrand Bakker
Senior Oracle DBA -
I have about 10000 images of different persons with dimension of 640*480. I wan to crop face from these images to dimension of 200*280. The location of face varies in differnt pics. So, please let me know step by step how can I perform this using the Lightroom software. Also I wan to know what should be the aspect ratio to do so.Thank you in advance
The aspect ratio should be set to 200x280, or equivalently 5x7.
I don't think it is possible to do the cropping automatically in Lightroom, you'd have to do this image by image to crop the faces correctly. -
Performing calculations on characteristics, using the results as query rows
I want to perform a calculation on 2 date fields (find the number of years separating the dates). These 2 date fields are characteristics. I want to use the result field as a row in the query. How to do this?
Do I have to use a calculated key figure and then converted that key figure into a characteristic to use in a row?
Thanks
SanjeevHi,
You need to use the Condition on this Date difference column.
http://help.sap.com/saphelp_bw31/helpdata/en/73/702e39074dc93de10000000a114084/frameset.htm
With rgds,
Anil Kumar Sharma .P
Message was edited by:
Anil Kumar Sharma -
I want to perform bidirectional i/o using a pci-6534.The problem is that i need to use the same lines for i/p and o/p. is that possible? And if it is how an i doing this?
Hi I Pant,
The idea that crossed my mind was to tie each of the lines coming from/going to "your device" to two of the DIO lines. Configure one these two ports as input, the other as output.
When you want to read the state of the line, read from the line configured as input. Similarly, use the other port when it is time to write.
Provided "your device" uses tri-state drivers/receivers, or can be used in a "wired-OR" configuration, this may work.
What is "your device"?
Ben
Ben Rayner
I am currently active on.. MainStream Preppers
Rayner's Ridge is under construction -
KB16037 - Perform a test using the hardware diagnostic tool on the BlackBerry smartphone
KB16037 - Perform a test using the hardware diagnostic tool on the BlackBerry smartphone
Just noticed this; SWEET!
-----ProcedureTo perform a test using the hardware diagnostic tool on the BlackBerry smartphone, complete the following steps:
On the Home screen on the BlackBerry smartphone, click Options.
Select Status.
On the Status screen, type test.Note: On BlackBerry smartphones that support SureType® technology, use the multi-tap input method.
From the menu on the Device Self Test Application screen, select Start.
If you've found a solution through a post; please mark it as a solution.
If someone's was particularly helpful, give them kudo's!.
Get busy living, or get busy dying.
http://blog.port3101.org/hdawg/This is cool!
1. If any post helps you please click the below the post(s) that helped you.
2. Please resolve your thread by marking the post "Solution?" which solved it for you!
3. Install free BlackBerry Protect today for backups of contacts and data.
4. Guide to Unlocking your BlackBerry & Unlock Codes
Join our BBM Channels (Beta)
BlackBerry Support Forums Channel
PIN: C0001B7B4 Display/Scan Bar Code
Knowledge Base Updates
PIN: C0005A9AA Display/Scan Bar Code -
How can I access the Edit preferences performance use Graphics Processor option through the jsx scri
I want to runa a script with and without GPU options. I made an actionto click on the Edit>Preferences>Performace>use graphics processor checkbox. But now I want to check wether the checkbox is ticked or not to determine i should use it for a with GPU run or without GPU run. I cant seem to find the prefernce/property/object name to access this selection in the photoshop scripting library. Can someone help me here?
I did not see anything in the Object Viewer for preference open GL, performance or GPU so I do not think there is a DOM method available to retrieve or set it. You can set it using the action manager using scriptlistener code.
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc29 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref19 = new ActionReference();
var idPrpr = charIDToTypeID( "Prpr" );
var idCchP = charIDToTypeID( "CchP" );
ref19.putProperty( idPrpr, idCchP );
var idcapp = charIDToTypeID( "capp" );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref19.putEnumerated( idcapp, idOrdn, idTrgt );
desc29.putReference( idnull, ref19 );
var idT = charIDToTypeID( "T " );
var desc30 = new ActionDescriptor();
var idMmrU = charIDToTypeID( "MmrU" );
var idPrc = charIDToTypeID( "#Prc" );
desc30.putUnitDouble( idMmrU, idPrc, 90.000000 );
var idopenglEnabled = stringIDToTypeID( "openglEnabled" );
desc30.putBoolean( idopenglEnabled, true );
var idCchP = charIDToTypeID( "CchP" );
desc29.putObject( idT, idCchP, desc30 );
executeAction( idsetd, desc29, DialogModes.NO ); -
using Shading Dictionary to perform shading in pdf,before that the shading dictionary call from Pattern Dictionary.In the Pattern Dictionary there is an Matrix based on the matrix value location the shading operation is perform,So i dont know how to calculate value of pattern Dictionary matrix value.
10 0 obj
<< /Type /Pattern
/PatternType 2
/Shading 11 0 R
/Matrix [1.00 .00 .00 1.00 54.00 53.00] // the matrix value how to calculate
>>
11 0 obj
<<
/ColorSpace /DeviceRGB
/Function 12 0 R
/ShadingType 2
/Coords [109.2726 69.00 109.2726 .00]
/Extend [true true]
>>
12 0 obj
<<
/FunctionType 0
/Domain [.00 1.00]
/Range [.00 1.00 .00 1.00 .00 1.00]
/Size [1002]
/BitsPerSample 8
/Length 3006
>>
stream
here is an stream of colors
endstream
endobj
Can anybody help me please.
Regards, Sasi kumar sekar.Hi, Sasi -
The Matrix maps coordinates in your shading dictionary into User Space. That is, the Matrix entry in the Pattern dictionary specifies a coordinate transformation that will be applied to coordinates specified in the shading dictionary.
To take your example, you have an axial shading extending from (rounding off) 109,69 to 109,0. Your Pattern dictionary specifies the Matrix
[ 1 0 0 1 54 53 ]
This transformation matrix corresponds to a scale of 1,1 (that is, no change in scale) and a translation of 54,53. Thus, the actual endpoints for the axial shading will be the User Space positions 163,122 and 163,53 (assuming I’ve added correctly).
As to what values to use for your Matrix, it depends on how you’ve set up your Shading dictionary. If the coordinates you’ve specified are actually where you want the gradient to go, then just use an identity matrix
[ 1 0 0 1 0 0 ]
By the way, are you sure that the Pattern dictionary includes a Matrix entry? I seem to remember (it's been a while since I've looked at Patterns) that the matrix is supplied as an argument to the makepattern operator:
<<patternDict>> [ 1 0 0 1 0 0 ] makepattern
Hope that helps.
- John Deubert
Acumen Training
PostScript and PDF
Training & Consulting -
When using the measure tool the imputed scale resets to 1to1 as soon as you perform another action. How do you get the scale to lock?
Hi there - I think I am having problems associated withg Cause 9 in that in google mail I have another pop email address associated so that I can send using this email address, but then I have both addresses setup seperately in BIS. When I receive a mail from GMAIL I receive a duplicate with "received by: unknown" in the header. I had gmail setup so that it would send using by pop email address as default.
In your answer the settings for the two filters you recommend creating are broken links and I canot actually see them. What are they?
Also What do you recommend setup wise with gmail and a pop account. Some people say it is better to get gmail to receive the pop mail account and run the whole account from there. Blackberry doesn't seem to like this setup very much. Should I completely dissociate the pop account and to try and clarify the distinction between the two? Or should I setup a second gmail account and have that poll my pop account and then have the blackberry feed off these two gmail accounts? The reason I am considering this option is gmail provides a lot of storage and online continuity and this would effectively persist my account.
Your help would be much appreciated.. I have had blackberry woes now for over a month and I have spent hours with various support personel, tried deleteing and sending down new service books etc etc but had no luck yet.
thanks,
Nathan -
I shot at a Live performance last weekend by using the 'capture now' button. Now, my FCP is only playing the first 6 frames - how can I access or recover the full hour I shot?
FCP X? Then you need to use a different forum...This is the FCP 7 and earlier forum:
https://discussions.apple.com/community/professional_applications/final_cut_pro_ x
FCP 7? Did it look like it captured normally? Everything go smoothly? Stop normal? Did an error occur at any point? Can you open the file in QT?
In the future...do not rely on ONLY FCP for this task. Get a reputable recorder that can record to ProRes. AJA KiPro, KiPro Mini, Atmos Ninja, Decklink Recorder...lots of options. -
The airport time capsule 2TB is only connecting to the web when performing a backup, it just started doing this how do I fix it?
That is a weird one.. never heard of it drop out except doing backups.
Reset the TC to factory settings.
The Factory Reset universal
Unplug your TC/AE. Hold in reset. and power the TC/AE back on.. all without releasing reset and keep holding in for about 10sec. The time is not important.. it is the front LED rapid flashing that indicates you are in factory mode.
Release reset.
If it doesn’t flash rapidly you have released reset at some point and try again.
Be Gentle! Feel the switch click on. It has a positive feel.. add no more pressure after that.
TC/AE will reboot after a couple of minutes with default factory settings and will wipe out previous configurations.
No files are deleted on the hard disk.. No reset of the TC deletes files.. to do that you use erase from the airport utility.
Redo the setup with all short names no spaces and pure alphanumeric.
It should then work fine.. but I need more info if you still have problems.
What modem? Is it a router?
How is the TC connected?
Is the computer running Mavericks? -
hello everyone! as what i haved mentioned in the title.In optical coherence tomography system ,i need to perform for every line data whick accquired by NI1433,how can i use
the transformed data tto construct an depth image .This is no longer my main area of expertise, but here is results of brief search:
Spectral Domain Optical Coherence Tomography System Design: sensitivity fall-off and processing speed enhancement
look at Chapter 5
https://circle.ubc.ca/bitstream/id/91474/ubc_2010_fall_chan_kenny.pdf
Ultrahigh-resolution, high-speed, Fourier
domain optical coherence tomography and
methods for dispersion compensation
http://www.opticsinfobase.org/oe/abstract.cfm?uri=OE-12-11-2404
hope this helps,
Curt
Curt Corum, Ph.D.
Center for Magnetic Resonance Research
University of Minnesota
Maybe you are looking for
-
Install 8.1.7 on AS 3.0
As part of a migration of our Oracle Apps database from unix to linux I'm trying to install Oracle Enterprise Edition 8.1.7 on my RH Linux AS 3.0 install. Checking certifications I find that 8.1.7 isn't certified against 3.0 but is against 2.1. In tr
-
Urgent!! Sum function for subtotals.,Exporting BA does not list Workbooks
Hi, I m facing this issue when calculating subtotals in the report. When i use the sum function, the subtotals are not getting displayed. I tried usin the Cell Sum Distinct function and it sums up only if the amounts are different. For example when i
-
An HTML snippet does not work once published to a website although it does work in the "view published site" option. Error message "Not Found URL requested". I use iWeb for my website and Firezilla to publish to www. Any solutions please?
-
My file associations mysteriously changed!
Somehow or another all of my mp3 file associations reverted to windows media player. I can't seem to find anywhere in ITUNES to change them back! Can anyone assist? Thanks!
-
Have not been prompted to download new iOS
I am not able to upgrade some of my apps because I don't have ios5 but I have not had any prompt to upgrade and my iPad won't let me download. Please help?