10 September 2006

Impilicit Casting On Pirimitive Types In Oracle

Birçok programlama dilinde olduğu gibi Oracle'nin PL/SQL'i de implicit olarak cast yapmaya izin vermektedir. Ama PL/SQL'de durum biraz farklıdır. Sadece benzer tipler arasında değil(int-double), farklı tiper arasında da bu duruma izin verilmektedir. Önemli olan kaynak tipin, hedef tipe göre uyumlu olmasıdır. Yani "123d" stringini rakama dönüştüremezsiniz.

10G ile yaptığım örnekte durumu görebilirsiniz:

DECLARE
varchar_arg VARCHAR2(128);
number_arg NUMBER := 123;
date_arg DATE := SYSDATE;
BEGIN
--impilicit cast number -->> varchar
varchar_arg := number_arg;
dbms_output.put_line(varchar_arg);
--123

--impilicit cast date -->> varchar
varchar_arg := date_arg;
dbms_output.put_line(varchar_arg);
--10/09/2006

--impilicit cast varchar -->> number
varchar_arg := '456';
number_arg := varchar_arg;
number_arg := number_arg + 4;
dbms_output.put_line(number_arg);
--460

--impilicit cast varchar -->> date
varchar_arg := '10/09/2006';
date_arg := varchar_arg;
date_arg := date_arg + 1;
dbms_output.put_line(date_arg);
--11/09/2006

END;

Bunların dışında Oracle çok geniş opsiyonları olan to_number, to_char ve to_date gibi built-in fonksiyonlar ile expicit cast e de izin vermektedir.

No comments: