Orhan AKDOĞAN > Oracle

ORACLE – Invalid objeleri toplu olarak compile etmek

Select 'ALTER ' || OBJECT_TYPE || ' ' || OWNER || '.' || OBJECT_NAME || ' COMPILE;'
 From dba_objects
 where status = 'INVALID'
 and object_type in ('PACKAGE','FUNCTION','PROCEDURE','VIEW');

Oracle – Dynamic Cursor SQL

 
CREATE OR REPLACE PROCEDURE query_invoice(
       month VARCHAR2, 
       year VARCHAR2) IS
    TYPE cur_typ IS REF CURSOR;
    c cur_typ;
    query_str VARCHAR2(200);
    inv_num NUMBER;
    inv_cust VARCHAR2(20);
    inv_amt NUMBER;
BEGIN
    query_str := 'SELECT num, cust, amt FROM inv_' || month ||'_'|| year 
      || ' WHERE invnum = :id';
    OPEN c FOR query_str USING inv_num;
    LOOP
        FETCH c INTO inv_num, inv_cust, inv_amt;
        EXIT WHEN c%NOTFOUND;
        -- process row here
    END LOOP;
    CLOSE c;
END;

SQL Developer -“ORA-01882: timezone region not found” Hatası

SQL Developer da alınan “ORA-01882: timezone region not found” Hatasını gidermek için;
Sqldeveloper kurulum dizinine gidip;
sqldeveloper\sqldeveloper\bin\sqldeveloper.conf
yolundaki dosyayı notepad ile açıp
satır sonuna
AddVMOption -Duser.timezone=”+01:00″

Değerini ekleyip tekrar denemeliyiz.

Oracle – Satırları virgülle ayrılmış tek satır olarak getirmek

SELECT table_name "Tablo Adı" , wmsys.wm_concat(column_name) "Kolon Listesi"
FROM all_tab_columns
WHERE table_name='TBLSTSABIT' -- Tablo adını yazıyoruz.
and rownum<20  --ilk 20 kolonu
GROUP BY table_name

Oracle – Object Creation and Modification Dates

SELECT   owner, object_name, TO_CHAR (created, 'YYYY-MM-DD hh:mi:ss') created,
         TO_CHAR (last_ddl_time, 'YYYY-MM-DD hh:mi:ss') modified, object_type
FROM dba_objects
WHERE owner LIKE UPPER ('XTablespace')
ORDER BY created,modified DESC

Oracle – Table Columns Report

SELECT   a.owner,    table_name  || ' '  || object_type table_name, column_name,
         data_type, data_length, DECODE (nullable, 'N', 'NO', 'YES') nullable
    FROM dba_tab_columns a, dba_objects b
   WHERE a.owner NOT IN ('SYS', 'SYSTEM')
   AND a.owner = UPPER ('Xtablespace')
     AND a.owner = b.owner
     AND a.table_name LIKE UPPER ('Xtablename')
     AND a.table_name = b.object_name
     AND object_type IN ('TABLE', 'VIEW', 'CLUSTER')
ORDER BY owner, object_type, table_name, column_id

Oracle – Tablo İstatistikleri

Tablo satır adetleri vb. bilgileri izleyebilirsiniz.

SELECT   owner, table_name, tablespace_name, num_rows, blocks, empty_blocks,
         avg_row_len, sample_size, last_analyzed
FROM dba_tables
WHERE UPPER (owner) LIKE 'xxx'
ORDER BY owner, table_name

Oracle – For Update

Select sonuna yazılarak kullanılır.Seçilen kayıtlara, commit veya rollback yapılana kadar DML işlemi yapılmasını engeller.
Yani bu kayıtlara lock koyulur.

SELECT * FROM tblfatuirs WHERE fatirs_no= 'DN0000012345' FOR UPDATE;

Oracle – PL/SQL Regular Expression

PL/SQL içerisinde işleri kolaylaştıran pek çok regular expression ifadesi bulunuyor.
“REGEXP_” ile başlayan bu ifadelerden biri de REGEXP_REPLACE dir.

Aşağıdaki örnekde REGEXP_REPLACE ile, ilgili alanın içinden yalnızca sayıları alıyoruz.

REGEXP_REPLACE(table.field,'[^0-9]')

PL/SQL Regular Expression komutları hakkında daha detaylı bilgiye aşağıdaki linkten ulaşabilirsiniz.

http://psoug.org/reference/regexp.html