I am writing a procedure in which i am using dynamic queries.
I am assigning the dynamic query to a variable and then executing the query .
but as in when the query grows i can t keep it in a variable.
so how shud i execute the query
another problem is the result set is a set of records , how can i get the records
My proc as of now
Create or replace procedure datacompare
(tab_name1 In varchar2,
tab_name2 In varchar2,
Col_name in varchar2,
business_keys varchar2 )
IS
query varchar2(32767) ;
v_count Number(10);
V_result varchar2(32767) ;
begin
query:='Select count(*) from (
select '|| tab_name1||' , a.* from
(Select '||Col_name||', '||business_key s||' from ' ||tab_name1||
' minus
select '||Col_name||', '||business_key s||' from '||tab_name2||
' order by '||business_key s||
')A union all
select '|| tab_name2||' , b.* from
( select '||Col_name||', '||business_key s||' from ' ||tab_name2||
' minus
select '||Col_name||', '||business_key s||' from '||tab_name1||
' order by '||business_key s||
')B ) order by '||business_key s||' '
;
dbms_output.put _line(query);
execute immediate query into v_count;
dbms_output.put _line(v_count);
end;
/
I am assigning the dynamic query to a variable and then executing the query .
but as in when the query grows i can t keep it in a variable.
so how shud i execute the query
another problem is the result set is a set of records , how can i get the records
My proc as of now
Create or replace procedure datacompare
(tab_name1 In varchar2,
tab_name2 In varchar2,
Col_name in varchar2,
business_keys varchar2 )
IS
query varchar2(32767) ;
v_count Number(10);
V_result varchar2(32767) ;
begin
query:='Select count(*) from (
select '|| tab_name1||' , a.* from
(Select '||Col_name||', '||business_key s||' from ' ||tab_name1||
' minus
select '||Col_name||', '||business_key s||' from '||tab_name2||
' order by '||business_key s||
')A union all
select '|| tab_name2||' , b.* from
( select '||Col_name||', '||business_key s||' from ' ||tab_name2||
' minus
select '||Col_name||', '||business_key s||' from '||tab_name1||
' order by '||business_key s||
')B ) order by '||business_key s||' '
;
dbms_output.put _line(query);
execute immediate query into v_count;
dbms_output.put _line(v_count);
end;
/
Comment