Compare 2 Range tables
Hi,
Is there any simple way to compare two range tables, something like RANGE1 IN RANGE2 ? I need to check if one range table is inside another or not.
Thanks, Nuno
I don't know if this is correct but a read in a post a time ago that you can compare two internal tables when had the same number of lines and and the same elements you can use
IF RANGE1 = RANGE2.
ENDIF.
if that is not the case then you have to loop to know if the element is inside the range
Similar Messages
-
Compare two tables on different server without using Linked Servers
I have an SSIS package that needs to compare a table to another table on another server. Then only delete data from the first table if it exists in the second table.
I know this is possible with Linked Servers but we are doing away with them in my company. Is there a way inside of SSIS to do this?
Oh and I can't use a Data Flow since I don't know the table names or columns at run time (the whole package is dynamic) so I can't map the columns ahead of time.
So no MERGE JOIN unless it can be used outside of a Data Flow.You 'll have to use the Data Flow Transformation, thing is, given the constraints, your only option seems to be in generating the package programmatically (using code).
The type of a program would be a Windows Console. The program would expect a few parameters as the source and target tables along with any necessary connection parameters.
Then use the merge join (being the easiest to code in) in an Execute SQL Task component.
Examples of coding packages:
Samples for creating SSIS packages programmatically
PS: I can tell you, given your circumstances, at the very minimum the impact on the bottom line of your company is brittle apps accompanied with expensive maintenance which translates into reduced ROI from your tooling.
Arthur My Blog
The package is table driven and is a dynamic archival process. The end user just fills in the framework table and the package archives data from within a certain time range. The table can exist on any server, any database.
That part is done. The part that still needs to be accomplished is to delete data out of the base table since it is archived. I need a safe way of doing this and so thought to compare the archive table against the base table. Because they
can exist anywhere and can have any name I am not sure how to do this without Linked Servers. That being said we will not have Linked Servers for this.
Is there another safe way to delete data out of the base table? -
Script for Compare same table 'TAB1' structures in different schemas
Hello, i am having three schema and in all schema i have same table for example TAB1 and i want to Compare TAB1 table structures in all three schema but i don't know the script. the different should content at least DATA_TYPE,DATA_LENGTH,DECODE(DATA_PRECISION,NULL,NULL,DATA_PRECISION||','||DATA_SCALE) columns in query. Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi Thanks..
If you want a generic script use below function to get the difference.. Run the below script and let me know in case of any issues
CREATE OR REPLACE TYPE nt_username IS TABLE OF VARCHAR2(50);
CREATE OR REPLACE TYPE obj_struc IS OBJECT (user_name1 VARCHAR2(30),
user_name2 VARCHAR2(30),
column_name1 VARCHAR2(30),
column_name2 VARCHAR2(30),
data_type1 VARCHAR2(106),
data_type2 VARCHAR2(106),
data_length1 NUMBER(10),
data_length2 NUMBER(10),
data_precision1 VARCHAR2(50),
data_precision2 VARCHAR2(50),
column_id1 NUMBER(10),
column_id2 NUMBER(10)
CREATE OR REPLACE TYPE nt_struc IS TABLE OF obj_struc;
CREATE OR REPLACE FUNCTION tabstruc_script (p_tabnm VARCHAR2,
p_usernm nt_username
RETURN nt_struc
AS
v_nt_struc nt_struc := nt_struc();
v_ntusrnm nt_username := p_usernm;
TYPE rec_stru IS RECORD (column_name all_tab_columns.column_name%TYPE,
data_type all_tab_columns.data_type%TYPE,
data_length all_tab_columns.data_length%TYPE,
data_precision all_tab_columns.data_precision%TYPE,
data_scale all_tab_columns.data_scale%TYPE,
column_id all_tab_columns.column_id%TYPE
TYPE nt_stru IS TABLE OF rec_stru;
v_ntstru nt_stru := nt_stru();
v_columnname all_tab_columns.column_name%TYPE;
v_reccnt NUMBER;
v_cnt NUMBER;
v_precision1 VARCHAR2(50);
v_precision2 VARCHAR2(50);
BEGIN
FOR i IN 1..v_ntusrnm.COUNT
LOOP
SELECT COUNT(*) INTO v_reccnt
FROM all_tables
WHERE owner = v_ntusrnm(i)
AND table_name = p_tabnm;
IF v_reccnt >= 1 THEN
SELECT column_name,
data_type,
data_length,
data_precision,
data_scale,
column_id
BULK COLLECT INTO v_ntstru
FROM all_tab_columns
WHERE owner = v_ntusrnm(i)
AND table_name = p_tabnm;
FOR j IN i+1..v_ntusrnm.COUNT
LOOP
FOR k IN 1..v_ntstru.COUNT
LOOP
SELECT COUNT(*) INTO v_cnt
FROM all_tab_columns
WHERE owner = v_ntusrnm(j)
AND table_name = p_tabnm
AND column_name = v_ntstru(k).column_name;
IF v_cnt >= 1 THEN
FOR l IN (SELECT column_name,
data_type,
data_length,
data_precision,
data_scale,
column_id
FROM all_tab_columns
WHERE owner = v_ntusrnm(j)
AND table_name = p_tabnm
AND column_name = v_ntstru(k).column_name)
LOOP
IF ((v_ntstru(k).column_id <> l.column_id)
OR (v_ntstru(k).data_type <> l.data_type)
OR (NVL(v_ntstru(k).data_length,0) <> NVL(l.data_length,0))
OR (NVL(v_ntstru(k).data_precision,0) <> NVL(l.data_precision,0))
OR (NVL(v_ntstru(k).data_scale,0) <> NVL(l.data_scale,0))) THEN
v_nt_struc.EXTEND;
SELECT DECODE(v_ntstru(k).data_precision,NULL,NULL,v_ntstru(k).data_precision||','||v_ntstru(k).data_scale),
DECODE(l.data_precision,NULL,NULL,l.data_precision||','||l.data_scale)
INTO v_precision1,
v_precision2
FROM DUAL;
v_nt_struc(v_nt_struc.COUNT) := obj_struc(v_ntusrnm(i),
v_ntusrnm(j),
v_ntstru(k).column_name,
l.column_name,
v_ntstru(k).data_type,
l.data_type,
v_ntstru(k).data_length,
l.data_length,
v_precision1,
v_precision2,
v_ntstru(k).column_id,
l.column_id);
END IF;
END LOOP;
END IF;
END LOOP;
FOR m IN(SELECT column_name,
data_type,
data_length,
data_precision,
data_scale,
column_id
FROM all_tab_columns
WHERE owner = v_ntusrnm(i)
AND table_name = p_tabnm
AND column_name NOT IN(SELECT column_name
FROM all_tab_columns
WHERE owner = v_ntusrnm(j)
AND table_name = p_tabnm))
LOOP
v_nt_struc.EXTEND;
SELECT DECODE(m.data_precision,NULL,NULL,m.data_precision||','||m.data_scale)
INTO v_precision1
FROM DUAL;
v_nt_struc(v_nt_struc.COUNT) := obj_struc(v_ntusrnm(i),
v_ntusrnm(j),
m.column_name,
NULL,
m.data_type,
NULL,
m.data_length,
NULL,
v_precision1,
NULL,
m.column_id,
NULL);
END LOOP;
FOR n IN(SELECT column_name,
data_type,
data_length,
data_precision,
data_scale,
column_id
FROM all_tab_columns
WHERE owner = v_ntusrnm(j)
AND table_name = p_tabnm
AND column_name NOT IN(SELECT column_name
FROM all_tab_columns
WHERE owner = v_ntusrnm(i)
AND table_name = p_tabnm))
LOOP
v_nt_struc.EXTEND;
SELECT DECODE(n.data_precision,NULL,NULL,n.data_precision||','||n.data_scale)
INTO v_precision2
FROM DUAL;
v_nt_struc(v_nt_struc.COUNT) := obj_struc(v_ntusrnm(j),
v_ntusrnm(i),
n.column_name,
NULL,
n.data_type,
NULL,
n.data_length,
NULL,
v_precision2,
NULL,
n.column_id,
NULL);
END LOOP;
END LOOP;
END IF;
END LOOP;
RETURN v_nt_struc;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END tabstruc_script;
SELECT * FROM TABLE(tabstruc_script(:tabnm,nt_username(:user1,:user2,:user3)));
You need to pass tablename and username to calling this function. Username is a nested table here so you can pass like nt_username(:user1,:user2,:user3) -
How to Captured Value into Select-Options Range Table Without "Enter"
Hi,
I defined a set of Select-Options in the Web Dynpro. I found that the value for the Select-Options will not be captured whenever I manually type in the value instead of choosing it from F4 Help Drop Down.
However, this problem can be resolved if I manually type in the value for Select-Options in the Selection Field and I press "Enter". Without pressing "Enter" value will not be captured.
Any solution for this issue? Please help.Hi Kris,
My problem is only when the user key in the value themselves rather than choosing it from Select-Options drop down value. Most of the time user will know what value to key in and will skip the step to choose from the Drop Down List. Thus, if this happen, the value keyed in by the user will not be able to capture into the range table.
I am using this logic to capture the value for selection item:
wd_this->m_helper->get_selection_screen_items(
IMPORTING et_selection_screen_items = lt_sel_item ).
* Values From Selection Screen
LOOP AT lt_sel_item ASSIGNING <fs_sel_item>.
CASE <fs_sel_item>-m_id.
WHEN `PERNR`.
ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_pernr>.
WHEN `BUKRS`.
ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_bukrs>.
WHEN `STAT2`.
ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_stat2>.
WHEN `WERKS`.
ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_werks>.
WHEN `BTRTL`.
ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_btrtl>.
WHEN `PERSG`.
ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_persg>.
WHEN `PERSK`.
ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_persk>.
WHEN `ABKRS`.
ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_abkrs>.
WHEN `BEGDA`.
ASSIGN <fs_sel_item>-m_value->* TO <fs_begda>.
ENDCASE.
ENDLOOP.
E.g. User key in the BUKRS without using the Drop Down Value provided by the Select-Options. For this case, <fs_bukrs> table will be initial as no value is captured.
Edited by: Girish Nabar on Apr 21, 2011 8:55 AM -
BUG? BRIDGE statement to compare two tables
Hello,
I tried to compare two tables in different dbs and remembered a post about Cross Connectin Queries
http://barrymcgillin.blogspot.com/2010/11/cross-connection-queries.html
BRIDGE temparb AS "EB05 01"
(SELECT * FROM arb)
(SELECT * FROM temparb
MINUS
SELECT * FROM arb
UNION ALL
(SELECT * FROM arb
MINUS
SELECT * FROM temparb
);I would expect to get the differences between the table arb in my current schema and the table arb alias temparb in the other db. Yet it seems, that in this case only the table in my current schema is read.
I materialize the BRIDGE table with
BRIDGE temparb AS "EB05 01"
(SELECT * FROM arb)and select the value I know to be only in the remote schema
SELECT id FROM temparb WHERE id = 2562;
SELECT id FROM arb WHERE id = 2562;Both times I get no result. I even tried to use aliases on the table, same result. Tested in 3.0 and 3.1 EA3.
Has anyone tried this before?
Regards
MarcusHi Marcus,
Have you tried it without the double quotes around the connection name?
I have a connection called
system_local
which I run the following command in
drop table testbridge_remote;
drop table testdbrige;
create table testbridge(col1 int);
insert into testbridge values (1);
insert into testbridge values (2);
insert into testbridge values (3);
commit;
I have a connection called
Connection Name With Space
which I run the following in
drop table testdbrige;
create table testbridge(col1 int);
insert into testbridge values (4);
insert into testbridge values (5);
insert into testbridge values (3);
commit;
Then in the system_local connection/worksheet I can run the following statement
BRIDGE testbridge_remote as Connection Name With Space(select * from testbridge)
+(SELECT * FROM testbridge_remote+
MINUS
SELECT * FROM testbridge
+)+
UNION ALL
+(SELECT * FROM testbridge+
MINUS
SELECT * FROM testbridge_remote
+);+
It works ok.
Returning rows in the remote table not in the local table , and rows in the local table not in the remote table .
Regards,
Dermot
SQL Developer Team. -
Compare two tables and log the difference
Hi,
I want to compare two tables and log the difference in new table with the fields as (old value,new value, column name). The column name should be the changes value columnCan you show an example?
SELECT Foo.*, Bar.*
FROM Foo
FULL OUTER JOIN
Bar
ON Foo.c1 = Bar.c1
AND Foo.c2 = Bar.c2
AND Foo.cn = Bar.cn
WHERE Foo.key IS NULL
OR Bar.key IS NULL;
Best Regards,Uri Dimant SQL Server MVP,
http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting:
Large scale of database and data cleansing
Remote DBA Services:
Improves MS SQL Database Performance
SQL Server Integration Services:
Business Intelligence -
Creation of dynamic range tables
Hi there,
I have a question. I created a function module that generates a range table in a very dynamic way. The only thing needed is the table- and the field-name.
But now I don't know how to use these ranges because I declared the exporting parameter as "TABLE" (also dynamic). And now I don't know which type I have to give with when calling my function module.
The coding of my function module is like this:
Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code
So how can I use this function module in an easy way? What I need is such a dynamic
DATA: lt_range TYPE ANY TABLE (which doesn' exist).
I need the range table in the following for different IF-clauses I want to check.
Thank you very much vor every hint.
Kind regards
Markus
Edited by: Markus Glubka on Jun 6, 2010 1:49 PM
Edited by: Rob Burbank on Jun 6, 2010 7:52 PMHi Markus,
If you are talking about RANGE table the structure is fixed. You have the SIGN, OPTION, LOW, HIGH fields. [http://help.sap.com/abapdocu_70/en/ABAPTYPES_RANGES.htm]
Even if your table is dynamic you can get these values from by ASSIGN COMPONENT statement. Accessing components of dynamic table has been discussed many a times in the forum, you can check.
BR,
Suhas -
Max. records in Range table used in Select .. IN ?
Hi
Does somebody knows wich is the max. amount of records in a RANGES table used in Select Comand:
select xxxx FROM table
where field IN range_table.
That, because i found severeal times programs aborting for this cause, so i changed this condition to an ALL ENTRIES.
Regards
FrankIt really depends on the table and DB settings.
Check with your DBA folks.
On our system it's ~ 400-500 for most of the tables.
NOTE: as it depends on DB settings - it may be different on your development system and on your production system.
For all entries does ntohave this limitation as it's being split into several selects, you can see it in the trace. -
Runtime error using range table in select query
I have to select tcodes from table tstc, based on the entries in ust12,
the entries in ust12-von and ust12-bis, these contains wild charcters also, and i have to selct all the tcodes from von to bis.
so ia m preparing a range table for the entries in ust12, and querying table tstc, then i am getting a runtime error with following description.
'If the problem occurred because an excessively large table was used
in an IN itab construct, you can use FOR ALL ENTRIES instead.'
but how can i use FOR ALL ENTRIES here, because if von = A* and bis = AB*,then i ahve to read all the entries from AAAA till ABZZ (may be something like this),
is there any way to write this query, with out runtime error.
there are total 15000 entries in ust12, i am preparing range table for 3000 entries each and querying tstc.
Thanks in advance
Best Regards
Amarender Reddy BHi,
first write a select on ust12 based on ust12-von and ust12-bis.
eg: select von bis from ust12 into table gt_ust12
where von LIKE 'A%'
and bis LIKE 'AB%'.
now write another select for tstc for all entries in gt_ust12...
Hope it helps
Regards,
Pavan -
Select options range table to be passed to Assistance class
Hi Guru's,
I have an assistance class where I have to write all my select queries. I have a selection screen with multiple Select options (as input fields). Now I want to pass the select options range table to assistance class.
Please let me know if you have any sample code for this which may also include building range tables for select options.
Thanks,
PradeepHi Pardeep,
U can use following code: for field ERDAT
data: rt_ERDAT type ref to data,
R_ERDAT TYPE RANGE OF VIQMEL-ERDAT,
R_ERDAT_line LIKE LINE OF R_ERDAT,
field-symbols: <fs_ERDAT> type table.
Retrieve the data from the select option
rt_ERDAT = wd_this->m_handler->get_range_table_of_sel_field( i_id = 'ERDAT' ).
Assign it to a field symbol
assign rt_ERDAT->* to <fs_ERDAT>.
copy field symbols to local variable
R_ERDAT = <fs_ERDAT>.
CALL METHOD WD_ASSIST->"METHOD_NAME"
R_ERDAT = R_ERDAT
where in class method:
R_ERDAT Importing Type ZU5QNM_ERDAT_T
ZU5QNM_ERDAT_T : is a table type of ZU5QNM_ERDAT_R
and ZU5QNM_ERDAT_R has following structure :
SIGN ACE_SIGN CHAR 1 0 Debit/Credit Sign (+/-)
OPTION ACE_OPTION CHAR 2 0 Option for Ranges Tables
LOW ERDAT DATS 8 0 Date on Which Record Was Created
HIGH ERDAT DATS 8 0 Date on Which Record Was Created
I hope this wiol solve ur problem.
Regards,
Vishal. -
Message mapping problem: BAPI with range table parameters
A kind hello to all,
I try to call the BAPI_ALM_ORDERHEAD_GET_LIST in a 4.70 system via RFC connector. The configuration already works with another BAPI. With this here I get message mapping exception:
Trace level="1" type="T">com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Zielelement /ns1:BAPI_ALM_ORDERHEAD_GET_LIST kann nicht angelegt werden. Prüfen Sie, ob die XML-Instanz für die Ausgangs-XSD und die Zielfeldzuordnung die Anforderungen der Ziel-XSD erfüllt. at com.sap.aii.mappingtool.tf3.AMappingProgram.start
(How can I switch the trace language to English easily? I try to translate:
"BAPI_ALM_ORDERHEAD_GET_LIST cannot be created. Check if the XML instance meets the requirements for the output XSD and the destination field mapping meets the requirements of the destination XSD.")
But the mapping test tool in the Integration Builder Design does not report any warning or error.
My guess is that the problem lies in the parameter structure of the BAPI_ALM_ORDERHEAD_GET_LIST: I have to fill the IT_RANGES selection range table, so it looks as if I need several instances of the item in the corresponding XML. Can I use "Duplicate tree" in the mapping editor? Here I got another exception?
Many thanks for any help!
Regards,
CarstenHi Udo,
you gave the final hint, indeed I used a XML file that was not evidently not compliant to the message type I created (even though it had been validated by Altova XMLspy).
From now onwards I only use the "Create instance" function of the test tool to create the XML body of my test messages...
Thanks a lot,
and best regards,
Carsten -
hi all,
i am using db10g.
my task is to compare two table's data for example
table1 is having
col1 col2 col3
a b c
e f g
table2 is
col4 col5 col6
a e c
e f g
so i have to compare col1 first record and col4 first record.
in otherwords first table first column first item with second table first table first value and so on.
for ex: a= a
b= e
c= c etc
how can i acheive this?
both are database tables.
i cannot use minus function because data types are different for the corresponding column
how can i compare it?
Thanks..
Edited by: user13329002 on Jan 13, 2011 1:09 AMHi,
Try this
select
case
when a.col1 = b.col1 then 'EQUAL' else 'NOT EQUAL' end column1,
case
when a.col2 = b.col2 then 'EQUAL' else 'NOT EQUAL' end column2,
case
when a.col3 = b.col3 then 'EQUAL' else 'NOT EQUAL' end column3
from (select col1,col2,col3,rownum rn from table1) a,
(select col1,col2,col3,rownum rn from table2) b where a.rn = b.rn Try to see how you order the rows of the two tables.
cheers
VT -
Missing PRCTR from Number Range Table
Hi There,
I need to find out all the the available profit centre which not created yet ie no profit centre available in CEPC from the number range table NRIV.
I tried the FM number_get_next but nothing happened.
Details given below:
In the NRIV table I have got say following details :
Object From Number To Number etc etc
Y_PC 0000000001 0000000100
Y_PC 0000000101 0000000150
Y_PC 0000000160 0000000200
Profit Centre Created Available in CEPC say
In the no range 1 to 100
0000000001
0000000002
0000000003 (Not created)
0000000004
5 ,6 & 7 missing
0000000008
In the no range 101 to 150
0000000101
0000000102
0000000103
0000000104 (Not created)
0000000105
6,7....upto 149...(Not created)
0000000150
Similarly in other ranges few nos missing
My requirement is to read the NRIV table take all from number and to number into an internal table and for those nos find the missing nos from the CEPC table .
Appreciate your help.
Regards.
SunandaResolved by myself !!
Cheers. -
Problem in selection from data base with RANGE-TABLE.
Dear folks,
I am facing weird problem with range table in selection query.I have problem with bold part of code.Here when i give input to both ranges r_salesno,r_brandid then and the selection occurs ,when i put black in one of those it does not work.I haev passed Empty table to range if no inpiut in elements..although it does not work..I dont know why it is happening...By the i m using this code in Webdynpro ABAP.Please help points will be awarded..
if Stru_Cn_Selcrtr-ca_slsrl is not initial.
wa_salesno-sign = 'I'.
wa_salesno-option = 'EQ'.
wa_salesno-LOW = Stru_Cn_Selcrtr-ca_slsrl.
APPEND wa_salesno TO r_salesno.
CLEAR : wa_salesno .
else.
wa_salesno-sign = 'I'.
wa_salesno-option = 'EQ'.
wa_salesno-LOW = space.
APPEND wa_salesno TO r_salesno.
CLEAR : wa_salesno .
endif.
if Stru_Cn_Selcrtr-ca_brand is not initial.
wa_brandid-sign = 'I'.
wa_brandid-option = 'EQ'.
wa_brandid-LOW = Stru_Cn_Selcrtr-ca_brand.
APPEND wa_brandid TO r_brandid.
CLEAR : wa_brandid .
else.
wa_brandid-sign = 'I'.
wa_brandid-option = 'EQ'.
wa_brandid-LOW = space.
APPEND wa_brandid TO r_brandid.
CLEAR : wa_brandid .
endif.
*If any of these are given then select data accordingly.
<b>select * from ZNSLVWHDIMMD_LCL
into corresponding fields of table IT_VIEW
WHERE SALESRLNO in r_salesno
* and CREATEDBY in It_crtby_selopt
* and STARTDATE in It_validfrm_selopt
* and ENDDATE in It_validto_selopt
* and STATUS in It_status_selopt1
and BRANDID in r_brandid.
* and MODELNO in It_model_selopt.</b>Hello Nirad
Your coding is problematic. I assume that field SALESRLNO (of table ZNSLVWHDIMMD_LCL) probably means sales number (or sales order) and, thus, must not be empty. If this is correct then the first IF statement is probably wrong:
if Stru_Cn_Selcrtr-ca_slsrl is not initial.
wa_salesno-sign = 'I'.
wa_salesno-option = 'EQ'.
wa_salesno-LOW = Stru_Cn_Selcrtr-ca_slsrl.
APPEND wa_salesno TO r_salesno.
CLEAR : wa_salesno .
else.
REFRESH: r_salesno. " means: select all sales numbers
" NOTE: If you fill the range like below this means that only sales order
" with no sales number (= ' ', space) should be select.
" Thus, there will never be any sales order selected.
* wa_salesno-sign = 'I'.
* wa_salesno-option = 'EQ'.
* wa_salesno-LOW = space.
* APPEND wa_salesno TO r_salesno.
* CLEAR : wa_salesno .
endif.
The same logic applies to the second IF statement. If you want to select all BRANDID if none has been provided as selection criteria then code:
if Stru_Cn_Selcrtr-ca_brand is not initial.
wa_brandid-sign = 'I'.
wa_brandid-option = 'EQ'.
wa_brandid-LOW = Stru_Cn_Selcrtr-ca_brand.
APPEND wa_brandid TO r_brandid.
CLEAR : wa_brandid .
else.
REFRESH: r_brandid. " means: select all BRANDID
* wa_brandid-sign = 'I'.
* wa_brandid-option = 'EQ'.
* wa_brandid-LOW = space.
* APPEND wa_brandid TO r_brandid.
* CLEAR : wa_brandid .
endif.
Regards
Uwe -
Avoid SUPPLEMENTAL LOG while comparing 2 tables using dbms_metadata_diff()
Hi,
I am using ORACLE DATABASE 11g R2. I am using a inbuilt package dbms_metadata_diff.compare_alter() to compare 2 tables and get the alter statements for them. I have applied GOLDEN GATE on one of the Schema's and as per the process we need to apply SUPPLEMENTAL LOGGING on the database. So when 2 tables are compared it also gives me the difference about the SUPPLEMENTAL LOG. I want to compare 2 tables but it should avoid the difference of the SUPPLEMENTAL LOG group.
Below is a part of code which I use :-
dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, -- Parameter to keep the DDL pretty.
'PRETTY',
TRUE);
dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, -- To put an SQL terminator(;) at the end of SQL.
'SQLTERMINATOR',
TRUE);
dbms_metadata.set_transform_param(dbms_metadata.session_transform, -- Not to consider the SEGMENT attributes for comparison.
'SEGMENT_ATTRIBUTES',
false);
dbms_metadata.set_transform_param(dbms_metadata.session_transform, -- Not to include the STORAGE clause.
'STORAGE',
false);
dbms_metadata.set_transform_param(dbms_metadata.session_transform, -- Not to include the TABLESPACE Info.
'TABLESPACE',
false);
-- Here I want some parameter which should avoid the SUPPLEMENTAL LOG group difference.
SELECT dbms_metadata_diff.compare_alter('TABLE', -- Compare 2 tables with respect to above parameters and give output as ALTER STATEMENTS.
V_OBJECT_NAME,
V_OBJECT_NAME,
V_DEST_SCHEMA_NAME,
V_SOURCE_SCHEMA_NAME,
null,
'DBLINK_TEMP')
into V_TAB_DIFF_ALTER
FROM dual;In the current case for all tables i get the output as below :- (sample table output)
ALTER TABLE "BANK"."BA_EOD_SHELL_DRIVER" DROP SUPPLEMENTAL LOG GROUP GGS_BA_EOD_SHELL_DR_199689;I don't want such alter statements in my output as i am not going to execute this on the schema , because i need SUPPLEMENTAL LOG for GOLDEN GATE.
Please suggest me some solution on it.
Thanks in advance.It probably won't answer the question...
The DBMS_METADATA_DIFF.COMPARE_ALTER function will return a CLOB containing all the ALTER TABLE statements.
I have noticed that you hold your resoult in V_TAB_DIFF_ALTER variable. Why don't you search what you need and remove it?
"The DBMS_LOB package provides subprograms to operate on BLOBs, CLOBs, NCLOBs, BFILEs, and temporary LOBs. You can use DBMS_LOB to access and manipulation specific parts of a LOB or complete LOBs."
Maybe you are looking for
-
Need Help in Breaking a big view into multiple small views or tuning the vw
Hi I have the following view can some one help me in breaking the view in small views or any recommendations for tuning it. CODE CREATE OR REPLACE FORCE VIEW "CRUVPD"."PX16_CHK_VW_SUMMARY_VW" ("CIDN", "BATCH_NUMBER", "BUSINESS_UNIT", "CHECK_VOUCHER_N
-
I don't use Photoshop much so I've never upgraded. I've had it for probably 10 years and my PC recently crashed so I had to reinstall it. The last time I installed it on this machine I had the same problem so I called support and they gave me a worka
-
SAP B1 Studio - Error Opening: There is an error in XML document (0, 0)
Hello everyone! Now try to open the SAP Business One Studio Suite and I get the following error: "System.InvalidOperationException:. There is an error in XML document (0, 0) ---> System.Xml.XmlException: Root element is missing." Reinstall the applic
-
Fix your FaceTime, Visual Voicemail, MMS, etc. without losing appdata!
I did NOT figure out this method, all credit to this guy on another forum, I'm just spreading the word because I know I had lots of trouble with this the past week. It's a kinda long process especially if you have a lot of stuff on your phone, but it
-
FF20 - The connection to the server was reset while the page was loading
Hello, Since FF starts to upgrate itself to FF20 in some of ours PCs, it doesn't load sites and write: (in some PCs it s possible to load the google page and make a search, but not opening any link) "The connection was reset The connection to the ser