14 Şubat 2022 Pazartesi

Oracle Streams Asenkron Kullanım

Eğer asenkron kullanacaksak bu iki şekilde yapabiliyoruz
1. Asynchronous Distribution HotLog
2. Asynchronous AutoLog

Bazı adımlar şöyle
-- Publisher : Create the Change Sources
BEGIN
   DBMS_CDC_PUBLISH.CREATE_HOTLOG_CHANGE_SOURCE(
       change_source_name => 'MAILING_LIST',
       description => 'test source',
       source_database => 'source_db');
END;
/

-- Publisher : Create Change Sets
BEGIN
   DBMS_CDC_PUBLISH.CREATE_CHANGE_SET(
       change_set_name => 'DAILY_MAILING_LIST',
       description => 'change set for contact info',
       change_source_name => 'MAILING_LIST',
       stop_on_ddl => 'y');
END;
/
-- Publisher: Create the Change Tables
BEGIN
   DBMS_CDC_PUBLISH.CREATE_CHANGE_TABLE(
       owner             => 'staging_streamspub',
       change_table_name => 'contacts_ct',
       change_set_name   => 'DAILY_MAILING_LIST',
       source_schema     => 'SH',
       source_table      => 'CONTACTS',
       column_type_list  => 'PHONE_NUMBER NUMBER(10), CONTACT_NAME VARCHAR2(50),
          ZIP_CODE NUMBER(5),
          EMAIL_ADDRESS VARCHAR2(15), HOME_ADDRESS VARCHAR(20)',
       capture_values    => 'both',
       rs_id             => 'y',
       row_id            => 'n',
       user_id           => 'n',
       timestamp         => 'n',
       object_id         => 'n',
       source_colmap     => 'n',
       target_colmap     => 'y',
       options_string    => 'TABLESPACE TS_DAILY_MAILING_LIST');
END;
/
--Publisher: Enable the Change Source
BEGIN
  DBMS_CDC_PUBLISH.ALTER_HOTLOG_CHANGE_SOURCE(
    change_source_name => 'DAILY_MAILING_LIST',
    enable_source      => 'Y');
END;
/

Publisher: Grant Access to Subscribers
GRANT SELECT ON staging_cdcpub.products_ct TO subscriber1;

10 Şubat 2022 Perşembe

Varrays - Variable-Size Arrays

Örnek
Şöyle yaparız. Varray null değer için "" karakteri basar.
DECLARE type type_ntt IS TABLE OF NUMBER;

l_ntt_var1 type_ntt:=type_ntt();

BEGIN
  l_ntt_var1.extend();
  l_ntt_var1(1):=857;
  l_ntt_var1.extend(3);
  l_ntt_var1.extend(3,1);

  FOR index IN 1..l_ntt_var1.count
  LOOP
    dbms_output.put_line('Index value ['||ndex||']: Element value - '||l_ntt_var1(ndex));
END LOOP loop_ntt; END; / dbms_output: Index value [1]: Element value - 857 Index value [2]: Element value - Index value [3]: Element value - Index value [4]: Element value - Index value [5]: Element value - 857 Index value [6]: Element value - 857 Index value [7]: Element value - 857
Örnek
Şöyle yaparız
type T_EXPIRATIONDATES is table of varchar2(14);
EXPIRATIONDATES T_EXPIRATIONDATES;

EXPIRATIONDATES := T_EXPIRATIONDATES();
EXPIRATIONDATES.EXTEND(100);

//Iterate over cursor
for REGISTRATIONS_ROW in C_REGISTRATIONS(FUNCTIONS_ROW.FUNCTION_ID) loop
  EXPIRATIONDATES(REGISTRATIONS_ROW.FUNCTIONCODE+1) := REGISTRATIONS_ROW.EXPIRATIONDATE;
end loop;

OUT_EXPIRATIONDATES_ROW VARCHAR2(32767);

for IDX in 1..100 loop
  OUT_EXPIRATIONDATES_ROW := OUT_EXPIRATIONDATES_ROW||'|'||EXPIRATIONDATES(IDX);
end loop;

9 Şubat 2022 Çarşamba

TRUNCATE TABLE

Giriş
Belirtilen tabloyu boşaltır. MySQL ile de aynı şekilde kullanılır

Örnek
TRUNCATE TABLE get_falist;

TO_NUMBER Metodu - String To Number

Giriş
Açıklaması şöyle
TO_NUMBER converts a string to a number of data type NUMERIC. 
TO_CHAR performs the reverse operation; it converts a number to a string. 
MySQL karşılığı CAST() metodu

Örnek
Şöyle yaparız
SELECT TO_NUMBER(functioncode) functioncode FROM ...

IS TABLE OF

Giriş
Stored Procedure içinde kullanılır

Örnek
Şöyle yaparız. Belirtilen tablonun aynısı olarak bir başka tablo yaratır
type T_MSISDNS is table of varchar(23);
Örnek
Şöyle yaparız. Belirtilen tablonun aynısı olarak bir başka tablo yaratır
TYPE <Typename>  IS TABLE OF <table>.ROW_ID%TYPE;