>>1. EXECUTE BLOCK and there for select and delete
 >I am completely unaware about execute block. Would you offer any help, 
so I could learn from it.

If PK is your integer primary key for MY_BOOK, then you should be able 
to do something like this:

execute block returns(Changes integer) as
   declare variable mbPK integer;
begin
   Changes = 0;
   for select distinct MB.PK
   from MY_BOOK MB
   join MY_BOOK_HEADER MBH on MBH.PK_BOOK_HEADER = MB.SK_BOOK_HEADER
   where MB.BOOK_TYPE = 4
     and Upper(Trim(MBH.HEADER_BOOK_CODE)) = Upper(Trim('127518010109038'))
--UPPER and TRIM doesn't make any difference to a constant containing 
only digits and no whitespace...
     And MBH.FK_BOOK_GROUP = '{79B79C33-CE56-4084-912B-6DD9F70B3DC4}'
   into :mbPK do
   begin
     update My_Book SET BOOK_NAME = 'Book Name1', BOOK_DESCRIPTION = 
'Book Description1'
     where PK = :mbPK;
     Changes = Changes + ROW_COUNT;
   end
   suspend;
end

'Changes' and 'suspend' is not required, but whenever I use EXECUTE 
BLOCK myself, I prefer to add such a variable to ascertain that I only 
update the ten records I want to update and not one million due to 
forgetting something important in the JOIN or WHERE clauses.

I think execute block can particularly improve performance if

a) You only want to reduce a small fraction of the records in My_Book, 
and/or
b) the EXISTS clause is complicated and time consuming

If both My_Book and My_Book_Header are small tables with sensible 
indexing, using execute block may be of little or no help.

HTH,
Set
  • Re: [firebird-... liviuslivius liviusliv...@poczta.onet.pl [firebird-support]
    • Re: [fire... Vishal Tiwari vishuals...@yahoo.co.in [firebird-support]
      • Re: [... liviusliv...@poczta.onet.pl [firebird-support]
      • Re: [... setysvar setys...@gmail.com [firebird-support]
        • R... Vishal Tiwari vishuals...@yahoo.co.in [firebird-support]
          • ... Vishal Tiwari vishuals...@yahoo.co.in [firebird-support]
            • ... Vishal Tiwari vishuals...@yahoo.co.in [firebird-support]

Reply via email to