Itgenpse147: De in-memory-tabel 'ACT' is al gedefinieerd in deze scope. Definieer de tabel in het geheugen eenmaal

Bij het uitvoeren van de volgende applicatiemodule XXSDPSYNCREL krijg ik de foutmelding:

itgenpse147:
De in-memory-tabel ‘ACT’ is al gedefinieerd in deze scope.
Definieer de tabel in het geheugen eenmaal.

De tabel wordt echter alleen create or replace, dus dit zou moeten werken.

declare
  p_eol_division_code_main number := 999999;
begin
  use all;
  create or replace table SyncLogs@InMemoryStorage
  ( id              guid     not null
  , occurrence_date datetime not null -- UTC
  , action_type     char     not null -- 'I', 'D' or 'U' for Insert, Delete or Update.
  , table_name      varchar2 not null
  , nk1             varchar2 not null -- First element of business key.
  , nk2             varchar2     null
  , nk3             varchar2     null
  , nk4             varchar2     null
  , nk5             varchar2     null
  , label           varchar2     null -- Textual background.
  , actions         varchar2 not null -- Changed values.
  --
  , ip_address      varchar2 not null -- Audit fields.
  , iuid            varchar2 not null
  , date_created    datetime not null
  , created_by      varchar2 not null
  , created_at      varchar2 not null
  , session_created varchar2 not null
  )
  ;
  create or replace table Act@InMemoryStorage
  as
  select act.*
  from   AccountsIncremental act
  where  1=0
  ;
  create or replace table actnew@inmemorystorage
  as
  select /*+ http_disk_cache(false) http_memory_cache(false) */
         Division
  ,      Id
  ,      Code
  ,      Name
  ,      Created
  ,      Modified
  ,      Remarks
  from   AccountsIncremental
  where  false
  ;
  create or replace table ExactOnlineAccountsSoll@InMemoryStorage
  as
  select spn.Code Division
  ,      gatstgt.Id GLAccountSales
  ,      gatptgt.Id GLAccountPurchase
  ,      act.* except Division, GLAccountSales
  from   Act@InMemoryStorage act
  join   SYSTEMPARTITIONS@DataDictionary spn
  on     false
  left
  outer
  join   GLAccountsIncremental gatssrc
  on     false
  left
  outer
  join   GLAccountsIncremental gatstgt
  on     false
  left
  outer
  join   GLAccountsIncremental gatpsrc
  on     false
  left
  outer
  join   GLAccountsIncremental gatptgt
  on     false
  ;
  create or replace table BankAccountsIst@InMemoryStorage
  as
  select /*+ http_disk_cache(false) http_memory_cache(false) */
         bat.Division
  ,      bat.Account
  ,      bat.IBAN
  ,      bat.Format
  ,      bat.BankAccount
  ,      bat.BICCode
  ,      bat.Main
  ,      bat.Type
  ,      bat.Id
  ,      bat.Modified
  ,      act.Code AccountCode
  ,      act.Name AccountName
  from   BankAccounts bat
  join   actnew@inmemorystorage act
  on     false
  where  false
  ;
  create or replace table BankAccountsSoll@InMemoryStorage
  as
  select /*+ http_disk_cache(false) http_memory_cache(false) */
         acttgt.Division
  ,      acttgt.Id Account
  ,      bat.IBAN
  ,      bat.Format
  ,      bat.BICCode
  ,      bat.Main
  ,      bat.Type
  ,      acttgt.Code AccountCode
  ,      acttgt.Name AccountName
  from   BankAccounts bat
  join   SYSTEMPARTITIONS@DataDictionary spn
  on     false
  join   ActNew@InMemoryStorage actsrc
  on     false
  join   ActNew@InMemoryStorage acttgt
  on     false
  where  false
  ;
  create or replace table AddressesSoll@InMemoryStorage
  as
  select /*+ http_disk_cache(false) http_memory_cache(false) */
         acttgt.Division
  ,      acttgt.Id Account
  ,      ads.Main
  --
  -- Main visit address is automatically created upon insert of account.
  --
  ,      ads.AddressLine1
  ,      ads.AddressLine2
  ,      ads.City
  ,      ads.State
  ,      ads.Country
  ,      ads.Postcode
  ,      ads.Type
  ,      acttgt.Code AccountCode
  ,      acttgt.Name AccountName
  from   AddressesIncremental ads
  join   SYSTEMPARTITIONS@DataDictionary spn
  on     false
  join   ActNew@InMemoryStorage actsrc
  on     false
  join   ActNew@InMemoryStorage acttgt
  on     false
  where  false
  ;
  create or replace table AddressesIncrementalSelected@InMemoryStorage
  as
  select ads.Id
  ,      ads.Division
  ,      ads.Account
  ,      ads.Main
  --
  -- Main visit address is automatically created upon insert of account.
  --
  ,      ads.AddressLine1
  ,      ads.AddressLine2
  ,      ads.City
  ,      ads.State
  ,      ads.Country
  ,      ads.Postcode
  ,      ads.Type
  ,      act.Code AccountCode
  ,      act.Name AccountName
  from   AddressesIncremental ads
  join   ActNew@inmemorystorage act
  on     false
  where  false
  ;
  --
  create or replace table Act@InMemoryStorage
  as
  select act.*
  from   AccountsIncremental act
  where  Division = p_eol_division_code_main
  ;

Een verbetering is doorgevoerd in de Invantive SQL-engine. Deze foutmelding zal niet meer in deze context optreden.