24 Temmuz 2018 Salı

CREATE Index

Giriş
İndexİsmi on Tabloİsmi (Sütunİsmi) şeklindedir.

Örnek
Şöyle yaparız
create table t as select * from all_objects;

Table T created.

create index tindx on t( object_name );

Index TINDX created.

select count(*) from t;

  COUNT(*)
----------
     21534

17 Temmuz 2018 Salı

CREATE TYPE AS OBJECT

Giriş
CREATE TYPE ile bir sürü farklı şey yaratılabiliyor. Açıklaması şöyle
The Oracle DOC's note the Oracle CREATE TYPE syntax as follows:

{   create_incomplete_type
  | create_object_type
  | create_varray_type
  | create_nested_table_type
}
Amaçlarından bir tanesi tablolarda sütün olarak kullanmak. Şöyle yaparız
CREATE OR REPLACE TYPE full_mailing_address_type AS OBJECT ( 
  Street       VARCHAR2(80),
  City         VARCHAR2(80),
  State        CHAR(2),
  Zip          VARCHAR2(10) 
);

CREATE TABLE customer (
  full_address full_mailing_address_type,
  ...
);
Örnek
Şöyle yaparız.
1. Object type:
    CREATE OR REPLACE TYPE ORDER_INFO AS OBJECT (
        ORDER_ID NUMBER(5),
        ORDER_DESC VARCHAR2(100)
    )

2. Collection type:
    CREATE OR REPLACE ITEM_DETAIL_COLLECTION AS TABLE OF ITEM_DETAIL;

    CREATE OR REPLACE TYPE ITEM_DETAIL AS OBJECT (
        ITEM_ID NUMBER(5),
        ITEM_CODE VARCHAR2(10),
        ITEM_DESC VARCHAR2(100)
    )
Örnek
Şöyle yaparız.
create or replace type CUSTOM_TYPE as object( name VARCHAR2(30),salary  NUMBER(5,2));

create or replace type CUSTOM_TYPE_TABLE is table of CUSTOM_TYPE;


15 Temmuz 2018 Pazar

NVL - Sadece Oracle'da Var

Giriş
Açıklaması şöyle
You may use the NVL function to replace null values with a default value. The function returns the value of the second parameter if the first parameter is null. If the first parameter is anything other than null, it is left alone.

This function is used in Oracle, not in SQL and MySQL. Instead of NVL() function, MySQL have IFNULL() and SQL Server have ISNULL() function.
Örnek
manager_id NUMBER ise şöyle yaparız.
select
    department_id, department_name, manager_id,
    NVL(cast(manager_id as varchar2(10)), 'na') "BONUS_AMT"
from
    departments
order by 1;

12 Temmuz 2018 Perşembe

Java - OraclePreparedStatement Arayüzü

Giriş
Şu satırı dahil ederiz.
import oracle.jdbc.OraclePreparedStatement;
java.sql.PreparedStatement arayüzünden kalıtır.

constructor
Şöyle yaparız.
Connection con = ...;
PreparedStatement st = con.prepareCall( "INSERT INTO container_tbl ( a, b, nested_tbl )
  VALUES ( ?, ?, ? )" );
close
Şöyle yaparız.
st.close();
execute metodu
Şöyle yaparız.
st.execute();
executeQueryAsyncOracle metodu
AsyncOracle metodları Oracle JDBCs’ Reactive Extensions ile geliyor

executeUpdateAsyncOracle metodu
AsyncOracle metodları Oracle JDBCs’ Reactive Extensions ile geliyor

setArray metodu
Şöyle yaparız.
import oracle.sql.ARRAY;

Connection con = ...;

Object[] objs = new Object[]{
  con.createStruct( "NESTED_ROW_TYPE", new Object[]{ "Q", 99 } ),
  con.createStruct( "NESTED_ROW_TYPE", new Object[]{ "R", 999 } )
};

ARRAY a = ((OracleConnection) con).createARRAY("NESTED_TBL_TYPE", objs);

PreparedStatement st = con.prepareCall( "INSERT INTO container_tbl ( a, b, nested_tbl )
  VALUES ( ?, ?, ? )" );

st.setString( 1, "x" );
st.setString( 2, "y" );
((OraclePreparedStatement) st).setARRAY( 3 , a );
setString metodu
Şöyle yaparız.
PreparedStatement st = ...;

st.setString( 1, "x" );
st.setString( 2, "y" );