Reach


Sometimes, you reach.
And when it happens, just enjoy :)
Here is the music.
And here are the words gathered:
we're living in the bodies.
perfect thoughts, resident in imperfect homes...
no sense.
distant bodies.
borders.
emptiness, between the borders.
non-matched patterns.
          uneven lines.
  simple transactions, creating complexity.
nights and days.
scattered and deprived.
deterritorialized.
  rueful and sore.
non-haptic touches.
  despoiled innocence.
Italics are by Sibel Alaş.

Kiddo - Childhood Boredom


When I was a kid
          in the lazy days of summer
                                                    and winter
I was lying down on the carpet
               and waiting for getting bigger
                                                             and older.

Breath


I call you breath
   touching and deep
         like a strongly tied thread
               helping me recover from my death.

Requiem for a Clown

Provided from http://aboutfacts.net
roll in the day
           as it goes.
follow the fate
        without thoughts.
embrace the pain
            in your bones.
bear your burden
        shaped by the codes
                    till you disappear
                          in blended crowds.

Post Democracy: Networkracy

Provided from http://www.harvest.ie

If it is the natural right for an individual to vote for the leaders who are to affect his/her life by making decisions, why is it bounded by the borders of the countries?

It is obvious that the choices of the leaders of the countries other than mine would directly or indirectly affect my life in my country because of the international relations, regulations and transactions. Therefore, it would be great for me to vote for the political leaders of the other countries. If I am right, then the independence of the countries, the definition of the citizenship and the international affairs may change significantly :)

We are living in a networked world, we have to demand more...
Just an idea :)

Burn


A few days ago, Fazıl Say was in court for the accusation of insulting the Islam by sending a couple of messages in Twitter. I will not tell all my feelings and thoughts on this process because I am afraid of being  in the same situation with Mr. Say and I am censoring myself.

However, I am just going to portray the act of tweeting according to my understanding: Twitter is a platform where its users can create private areas for themselves. Only the ones, a user allows can follow that user's messages. Besides, followers follow a user on their free will. Therefore, twitter is not an arena where you can impose your opinions to the people who are not willingly to get the messages from you. No one can force another one for anything. Plus, a user can convert its profile into public mode so that any one can follow that user without the user's approval. Let's assume your profile in Twitter is your living room, a personal, secured place of your own. And you are writing some sentences on the walls of your living room. Some sentences are irreligious ones :) Days are passing, and some people walking in front of your house are knocking your door and asking you whether they can read the sentences on your walls. And you allow them to read. Some more days are passing, and you decide to open the curtains of your living room so the people outside can see the writings on your walls. Then one day, some guys who are able to read the messages on your walls feel offended because of the messages they read and they sue you :) That's what Fazıl Say is experiencing in the year of 2012.
Very smart, right?

Beyond all those, there is a tiny text box in Twitter where you can write your messages and send them to your profile. A man, a text box, a button. When a man who has a big number of followers writes a message in a text box in Turkey, he is in danger of being taken to the jail. It's great, isn't it?

No more comments.

Sex-u-ality


Bugün Baudrillard'ın cinsel kimlik üzerine düşüncelerini derleyen bir makale okudum. Hemen cin fikirli adam tavrıyla "ben bunu düşünmüştüm" dedim. Ama gerçekten düşünmüştüm :) 6 Haziran 2011 tarihinde bir arkadaşıma attığım e-postayı aşağıya kopyalıyorum:

"...Birkaç düşüncemi sizle paylaşmak istiyorum: Erkek ve kadın olarak var olmanın mikro tarihi konusu ilgimi çekmeye başladı son zamanlarda.Tabi zamanında Michel Foucault yazmış: Deliliğin Tarihi, Cinselliğin Tarihi, Kliniğin Tarihi vs...
CNBC-E'de gösterilen Spartacus dizisinin Maslak'taki dev afişi dikkatimi çekti:
Elindeki kılıcı havaya kaldırmış, zafer çığlığı atan bir gladyatör. Son derece maskülen. Başarmışlık, güç, erkeklik kokuyor. Hayatın gerçeğine yakın.
Sonra aklıma bir orta çağ adamı geldi: Eve girer, evde kadınları ve çocukları vardır. Eve yemek getirmiştir.Kadınları onu pişirir. O adam kendisine kudret veren kadın, çocuk, toprak gibi değerleri korumak için ölebilir, öldürebilir. Az konuşur. Çok hareket eder.
Sonra kendime baktım. Takım elbiseli, ofise giden. Kadınlı erkekli karışık düzende oturup bilgisayar karşısında iş yapan "modern" birey.
Yanımda oturan kadınla beni ayıran "şeyler"in adedi çok çok azalmış. Öyle ki birbirimizi tanımlayamaz olmuşuz gibi geliyor.
Tabi ki ataerkil geleneğin gölgesi erkeği 3-5 adım önde tutuyor hala ama şu zamanda ne erkek erkekliğini biliyor, ne de kadın kadınlığını.
İşin ilginç yanı hala kadın-erkek cinsel etkileşimi devam edebiliyor. Bir kadın kendine bu denli benzeyen bir adamı neden beğenir?
Benzer işler yapıyor, benzer arabalar kullanıyor, benzer parfümleri kullanıyor, benzer zevkleri var, benzer hisler vs...
Jean Baudrillard'ın bahsetiği simulakra/simulasyon odaklı post modern modelde, daima başka göstergelere işaret eden göstergeler dünyasında ayağımızı yere sağlam basmamızı sağlayacak referanslar bulmakta zorlanıyoruz ve cinselliğimiz de bu bulanık ortamdan menfi manada nasibini alıyor bence.
Tanıdığım kadınların çoğu erkek gibi düşünüyor, erkekler de kadın gibi. Aradaki çizgi çok flu...
Kendini öteki üzerinde var etme paradigması işlemez hale gemekte sanki.
Oysa gladyatörün yaşamı  ne kadar net: Erkek gibi savaş. Kazan. Sevin. Ye. İç. Seks yap. Öl.
Düşüncelerimi organize bir biçimde veremediğimin farkındayım, umarım fazla gürültü yapmamışımdır.
Sevgiler."

Not: Evet, sıkıcı biriyim :)

Monster High!!!

Today my wife asked my six years old daughter what makes her sad the most. My daughter answered without a pause and her answer was a priority list, ordered from the most important to the least:
  1. Losing my Monster High Dolls set
  2. Mom's death
  3. Dad's death
  4. Grandparents' death
Monster High sucks!

The Flow


I was listening to this song while tweeting... And the sentences below just dropped out of my fingers in a sudden:

let our souls mix in harmony.
                talk less, feel more.
                      flow in the veins of this life adorer...
let's be together,
           seperated from each other.
cut this burning fire,
           calm down and admire.
we got enough thorns to bleed us,
         let's retreat and give a chance to our deprived hearts.

My Old Writings 16

This text reveals how boring and bored I can be. In addition, it reveals how fast I am changing in time. I wrote this text in a rush two or three years ago. I love the feeling of reflection when I find such writings of mine in the depths of my hard disk.

At the beginning, a repeating childish cry to mother is the base motive. Then the man realizes and accepts the situation and envisions a realistic path for himself :)

And once again, thank God, we are changing... Here it is:


Ben yolumu bulamadım anne.
Karanlığım,
   aydınlığım,
      alacakaranlığım...
Bitmeyen sürgünlük.
Kimsede yok benim ilacım.
O duru hissizlik ve tedirginlik
   Her anımda yanımda.
Yollarımı çizemedim
Çizdim de beğenmedim.
Gündelik
   sohbetler,
      ilişkiler,
         eğlenceler...
Basit
   yatıştırıcılar.
Eski günlerin sıcaklığı vardı...
   Nadiren dolardı içime.
O da kalmadı anne.
Beni sen de anlamazsın anne.
Keskin kalıplar boğuyor beni
   Midemi bulandırıyor.
Sen bana ilkokludayken de,
   sonrasında da
      yol göstermedin ki anne.
Yolumu ben hep kendim mi buldum?
O yolllar yol değilmiş anne.
Şekere üşüşen sinekler gibi kümeleşen mutlu insanlardan olamadım anne.
Rahat olamadım ben.
Çok mutlu olamadım.
Gözlerimi huzurla kapayamadım.
Kendimi kandırmak gibi geliyor bunlar hep.
Düne de,
   yarına da
      ölü gibi tepkisiz oldum ben artık.
Sadece şu ana,
   ve onun beni soktuğu kalıba karşı tepkiliyim.
Koca,
   baba,
      oğul,
         erkek,
            mühendis,
               bankacı...
Ben bunlar mıyım?
Keşke daha sonra doğursaydın beni anne.
Hayatın su gibi berrak olacağı zamanlara gönderseydin.
İdealim yok anneciğim.
Tutkum yok.
İnancım yok.
Heyecanım yok.
Teselli kaynağım yok.
Tekim.
Zaten hep öyle değil miydim?
Herkes öyle değil mi?
Şimdi neden sana sesleniyorum anne?
İçgüdü olsa gerek.
Adaptasyon devam ediyor
Zamanla olacak herşey.
Derin kopuşun sancısı dinecek.
Ve rotamı yine ben,
   tek başıma çizeceğim.
Anın hareketliliği,
   adiliği,
      sıkıcılığı,
         tekdüzeliği
            bana vız gelecek.
Daima açık gözlerimle var olacağım.
Kendim olacağım,
   Mutlu bir kedi yavrusu değil.
Belki dingin biri...
Ben...
Başkası değil...

The Story of Mel

Provided from http://ed-thelen.org/

In this post, I just want to refer to great Jargon File of ancient times :) I am not going to explain what it is but if you are in the computer business, and it is your first time you heard about the Jargon File, please follow the link above and start reading before you read my post... Ted Nelson's great book would be a good choice, if you want to have a retrospective look at computer world, as well.
Okay. I am stopping to be a smart-ass and am leaving you with the story of Mel from Jargon File:
This was posted to Usenet by its author, Ed Nather (), on May 21, 1983.

A recent article devoted to the macho side of programming
made the bald and unvarnished statement:
    Real Programmers write in FORTRAN.
Maybe they do now,
in this decadent era of
Lite beer, hand calculators, and “user-friendly” software
but back in the Good Old Days,
when the term “software” sounded funny
and Real Computers were made out of drums and vacuum tubes,
Real Programmers wrote in machine code.
Not FORTRAN.  Not RATFOR.  Not, even, assembly language.
Machine Code.
Raw, unadorned, inscrutable hexadecimal numbers.
Directly.
Lest a whole new generation of programmers
grow up in ignorance of this glorious past,
I feel duty-bound to describe,
as best I can through the generation gap,
how a Real Programmer wrote code.
I'll call him Mel,
because that was his name.
I first met Mel when I went to work for Royal McBee Computer Corp.,
a now-defunct subsidiary of the typewriter company.
The firm manufactured the LGP-30,
a small, cheap (by the standards of the day)
drum-memory computer,
and had just started to manufacture
the RPC-4000, a much-improved,
bigger, better, faster — drum-memory computer.
Cores cost too much,
and weren't here to stay, anyway.
(That's why you haven't heard of the company,
or the computer.)
I had been hired to write a FORTRAN compiler
for this new marvel and Mel was my guide to its wonders.
Mel didn't approve of compilers.
“If a program can't rewrite its own code”,
he asked, “what good is it?”
Mel had written,
in hexadecimal,
the most popular computer program the company owned.
It ran on the LGP-30
and played blackjack with potential customers
at computer shows.
Its effect was always dramatic.
The LGP-30 booth was packed at every show,
and the IBM salesmen stood around
talking to each other.
Whether or not this actually sold computers
was a question we never discussed.
Mel's job was to re-write
the blackjack program for the RPC-4000.
(Port?  What does that mean?)
The new computer had a one-plus-one
addressing scheme,
in which each machine instruction,
in addition to the operation code
and the address of the needed operand,
had a second address that indicated where, on the revolving drum,
the next instruction was located.
In modern parlance,
every single instruction was followed by a GO TO!
Put that in Pascal's pipe and smoke it.
Mel loved the RPC-4000
because he could optimize his code:
that is, locate instructions on the drum
so that just as one finished its job,
the next would be just arriving at the “read head”
and available for immediate execution.
There was a program to do that job,
an “optimizing assembler”,
but Mel refused to use it.
“You never know where it's going to put things”,
he explained, “so you'd have to use separate constants”.
It was a long time before I understood that remark.
Since Mel knew the numerical value
of every operation code,
and assigned his own drum addresses,
every instruction he wrote could also be considered
a numerical constant.
He could pick up an earlier “add” instruction, say,
and multiply by it,
if it had the right numeric value.
His code was not easy for someone else to modify.
I compared Mel's hand-optimized programs
with the same code massaged by the optimizing assembler program,
and Mel's always ran faster.
That was because the “top-down” method of program design
hadn't been invented yet,
and Mel wouldn't have used it anyway.
He wrote the innermost parts of his program loops first,
so they would get first choice
of the optimum address locations on the drum.
The optimizing assembler wasn't smart enough to do it that way.
Mel never wrote time-delay loops, either,
even when the balky Flexowriter
required a delay between output characters to work right.
He just located instructions on the drum
so each successive one was just past the read head
when it was needed;
the drum had to execute another complete revolution
to find the next instruction.
He coined an unforgettable term for this procedure.
Although “optimum” is an absolute term,
like “unique”, it became common verbal practice
to make it relative:
“not quite optimum” or “less optimum”
or “not very optimum”.
Mel called the maximum time-delay locations
the “most pessimum”.
After he finished the blackjack program
and got it to run
(“Even the initializer is optimized”,
he said proudly),
he got a Change Request from the sales department.
The program used an elegant (optimized)
random number generator
to shuffle the “cards” and deal from the “deck”,
and some of the salesmen felt it was too fair,
since sometimes the customers lost.
They wanted Mel to modify the program
so, at the setting of a sense switch on the console,
they could change the odds and let the customer win.
Mel balked.
He felt this was patently dishonest,
which it was,
and that it impinged on his personal integrity as a programmer,
which it did,
so he refused to do it.
The Head Salesman talked to Mel,
as did the Big Boss and, at the boss's urging,
a few Fellow Programmers.
Mel finally gave in and wrote the code,
but he got the test backwards,
and, when the sense switch was turned on,
the program would cheat, winning every time.
Mel was delighted with this,
claiming his subconscious was uncontrollably ethical,
and adamantly refused to fix it.
After Mel had left the company for greener pa$ture$,
the Big Boss asked me to look at the code
and see if I could find the test and reverse it.
Somewhat reluctantly, I agreed to look.
Tracking Mel's code was a real adventure.
I have often felt that programming is an art form,
whose real value can only be appreciated
by another versed in the same arcane art;
there are lovely gems and brilliant coups
hidden from human view and admiration, sometimes forever,
by the very nature of the process.
You can learn a lot about an individual
just by reading through his code,
even in hexadecimal.
Mel was, I think, an unsung genius.
Perhaps my greatest shock came
when I found an innocent loop that had no test in it.
No test.  None.
Common sense said it had to be a closed loop,
where the program would circle, forever, endlessly.
Program control passed right through it, however,
and safely out the other side.
It took me two weeks to figure it out.
The RPC-4000 computer had a really modern facility
called an index register.
It allowed the programmer to write a program loop
that used an indexed instruction inside;
each time through,
the number in the index register
was added to the address of that instruction,
so it would refer
to the next datum in a series.
He had only to increment the index register
each time through.
Mel never used it.
Instead, he would pull the instruction into a machine register,
add one to its address,
and store it back.
He would then execute the modified instruction
right from the register.
The loop was written so this additional execution time
was taken into account —
just as this instruction finished,
the next one was right under the drum's read head,
ready to go.
But the loop had no test in it.
The vital clue came when I noticed
the index register bit,
the bit that lay between the address
and the operation code in the instruction word,
was turned on —
yet Mel never used the index register,
leaving it zero all the time.
When the light went on it nearly blinded me.
He had located the data he was working on
near the top of memory —
the largest locations the instructions could address —
so, after the last datum was handled,
incrementing the instruction address
would make it overflow.
The carry would add one to the
operation code, changing it to the next one in the instruction set:
a jump instruction.
Sure enough, the next program instruction was
in address location zero,
and the program went happily on its way.
I haven't kept in touch with Mel,
so I don't know if he ever gave in to the flood of
change that has washed over programming techniques
since those long-gone days.
I like to think he didn't.
In any event,
I was impressed enough that I quit looking for the
offending test,
telling the Big Boss I couldn't find it.
He didn't seem surprised.
When I left the company,
the blackjack program would still cheat
if you turned on the right sense switch,
and I think that's how it should be.
I didn't feel comfortable
hacking up the code of a Real Programmer.
Provided from http://ed-thelen.org/

  

Hands

These are my grandmother's hands. My grandmother is about 85. She is a highly intelligent sweet tiny lady who is nearly 150 cm tall. These talented small hands managed lots of thing so far; including looking after me for months.
Seni çok seviyorum anneanne :)

P.S. Thank you Euphrates for the inspiration.

The Animal Instincts


I know that my blog is getting more domestic day by day but I can't stop myself uploading them :) When I put these materials in my blog, they immediately become eternal in the digital realm. It might be my animal instinct of being a father to a daughter... 

The Pieces out of The Mess


This morning, we took the bag, my daughter threw all the drawings in it, and started to sort out the things inside. After an hour, here are the ones worth uploading. The first one (above) is a map says my daughter. I just noticed the similarity between this map and the official logo of Hamilton Institute.


This one is a ship floating on the sea. I like the simplicity and the level of abstraction in this picture.


In this picture, my daughter created a lady in an extra ordinary styled dress. That dress reminds me Victoria Beckham's alien jacket.


Mothers and daughters :)


Left to right: Elder sister, daughter, father, mother.


Three ladies. The one on the right is sitting on a tiny chair. Notice the puff sleeves (karpuz kol) of the girl in the middle :)


The lady is my wife and the guy is me. At least, my daughter says so :) Don't you think the guy looks like Adolf Hitler?


Two models.



Two collages on pages of my master thesis.


Old lady with grey hair.


My daughter's house sticked on my lady dragon.


It's a collaborative family work.


I drew my wife and my daughter colored her lips.


Junkie girl with crazy hair :)


Indian mother and her daughter by my wife :)

Moods

Photo by Euphrates.

Standing still on the ground and defending your site in a legendary way. 
Negating the current status and taking actions to set up a novel state boldly.
Speaking less, acting more. 
Being a man as you are supposed to be.
Left no one behind, move forward together,
Die together unless you succeed in surviving together.
Strength, glory, honor!
Are these statements above describing an acceptable perception of life? Can all these big narratives, the powerful expressions that used to motivate nations for thousands of years make any sense to an individual who has got just minor and personal problems with life? 
I have got my own tragedies which possibly mean nothing to you. 
My tears are dropping down just in front of my feet. Not yours. 
It is not realistic to expect you to "understand" me. 
On the other hand, I need to be understood by you.
I cannot exist without your thoughts on me.
So, talk to me. Listen to me.
Look at me.
Say things about me.
Respond to me.
And do all these things without bothering me :)
I need your hands in my hands as the beautiful trees in the photograph holding hands in sorrow.
Sorrow which is inevitable. 

Colorful Borders?

I put the lines and shapes on the paper. My daugter mixed and poured the colors between the lines. And finally, she drew a green cone of ice cream on the left.
The question is that should a father draw the lines to be followed for his daughter and let her free to colorize them and add some more taste?
Fathers, daughters, choices, borders... 

A Poet, A Bum and Some Philosophers


I am writing about my man, Charles Bukowski, again. The poem I am sharing today is the opening piece of his book named What Matters Most is How Well You Walk Through the Fire that was published in 1999. I wish I could be reading life in such a simple way which is expressed in the poem below: Reading the meaning in the actions, rather than listening too many stories from too many people...
Enjoy :)

    my father and the bum

    my father believed in work.
    he was proud to have a
    job.
    sometimes he didn't have a
    job and then he was very
    ashamed.
    he'd be so ashamed that he'd
    leave the house in the morning
    and then come back in the evening
    so the neighbors wouldn't
    know.

    me,
    I liked the man next door:
    he just sat in a chair in
    his back yard and threw darts
    at some circles he had painted
    on the side of his garage.
    in Los Angeles in 1930
    he had a wisdom that
    Goethe, Hegel, Kierkegaard,
    Nietzsche, Freud,
    Jaspers, Heidegger and
    Toynbee would find hard
    to deny.

Quine in PL/SQL

A quine is a computer program which produces its own source code as its output. The name is referring to famous American philosopher Willard van Orman Quine who has a powerful influence on analytical philosophy. I recommend you to have a look at his brief biography and the paradox he introduced.

The anonymous PL/SQL block below stores its output in a table named t2 so that we can see the output by selecting the row inserted from the table after execution of the block.

Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning option

SQL> drop table t2;

Table dropped.

SQL> create table t2 (v varchar2(4000));

Table created.

SQL> declare
  2   s varchar2(4000) := 'declare
  3   s varchar2(4000):="$";
  4  begin
  5   insert into t2
  6   values
  7     (replace(replace(s, chr(34), chr(39)),
  8      chr(36),
  9      "$"));
 10  end;';
 11  begin
 12    insert into t2
 13    values
 14      (replace(replace(s, chr(34), chr(39)),
 15               chr(36),
 16               'declare
 17   s varchar2(4000):="$";
 18  begin
 19   insert into t2 values(replace(replace(s,chr(34),chr(39)),chr(36),"$"));
 20  end;'));
 21  end;
 22  /

PL/SQL procedure successfully completed.

SQL> select * from t2;

V
--------------------------------------- 
declare
 s varchar2(4000):='declare
 s varchar2(4000):="$";
begin
 insert into t2
 values
   (replace(replace(s,chr(34),chr(39)),
    chr(36),
    "$"));
end;';
begin
 insert into t2
 values
   (replace(replace(s, chr(34), chr(39)),
chr(36),
'declare
 s varchar2(4000):="$";
begin
 insert into t2 values(replace(replace(s,chr(34),chr(39)),chr(36),"$"));
end;'));
end;

Universal Data Printer in PL/SQL

The listing below demonstrates two procedures which are to execute any sort of SQL and print the data set in ";" seperated format. Both procedures use DBMS_SQL package for describing and fetching the data. The difference between those procedures is that the second one opens the data set by using a weak ref cursor then the ref cursor is casted to a DBMS_SQL cursor. This feature is announced with Oracle 11g Release 1.

Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning option

SQL> create or replace procedure pr_universal_data_printer(p_sql in varchar2) is
  2    fetch_out_of_seq exception;
  3    pragma exception_init(fetch_out_of_seq, -1002);
  4 
  5    unsupported_type exception;
  6    pragma exception_init(unsupported_type, -20001);
  7 
  8    desc_tab dbms_sql.desc_tab2;
  9    cols     binary_integer;
 10    cursor_  binary_integer;
 11 
 12    date_col date;
 13    char_col varchar2(4000);
 14    num_col  number;
 15    exe      number;
 16  begin
 17    if dbms_sql.is_open(cursor_) then
 18      dbms_sql.close_cursor(cursor_);
 19    end if;
 20 
 21    cursor_ := dbms_sql.open_cursor;
 22 
 23    dbms_sql.parse(cursor_, p_sql, dbms_sql.native);
 24 
 25    dbms_sql.describe_columns2(cursor_, cols, desc_tab);
 26 
 27    exe := dbms_sql.execute(cursor_);
 28 
 29    for i in 1 .. cols loop
 30      --print header
 31      dbms_output.put(desc_tab(i).col_name || ';');
 32 
 33      --define columns
 34      case desc_tab(i).col_type
 35        when dbms_types.typecode_varchar then
 36          dbms_sql.define_column(cursor_, i, char_col, 4000);
 37        when dbms_types.typecode_varchar2 then
 38          dbms_sql.define_column(cursor_, i, char_col, 4000);
 39        when dbms_types.typecode_char then
 40          dbms_sql.define_column(cursor_, i, char_col, 4000);
 41        when dbms_types.typecode_number then
 42          dbms_sql.define_column(cursor_, i, num_col);
 43        when dbms_types.typecode_date then
 44          dbms_sql.define_column(cursor_, i, date_col);
 45        else
 46          raise unsupported_type;
 47      end case;
 48    end loop;
 49 
 50    dbms_output.new_line;
 51 
 52    --fetch row
 53    while dbms_sql.fetch_rows(cursor_) > 0 loop
 54      --assign values according to the column types
 55      for i in 1 .. cols loop
 56        case desc_tab(i).col_type
 57          when dbms_types.typecode_varchar then
 58            dbms_sql.column_value(cursor_, i, char_col);
 59            dbms_output.put(replace(char_col,chr(10),'') || ';');
 60          when dbms_types.typecode_varchar2 then
 61            dbms_sql.column_value(cursor_, i, char_col);
 62            dbms_output.put(replace(char_col,chr(10),'') || ';');
 63          when dbms_types.typecode_char then
 64            dbms_sql.column_value(cursor_, i, char_col);
 65            dbms_output.put(replace(char_col,chr(10),'') || ';');
 66          when dbms_types.typecode_number then
 67            dbms_sql.column_value(cursor_, i, num_col);
 68            dbms_output.put(num_col || ';');
 69          when dbms_types.typecode_date then
 70            dbms_sql.column_value(cursor_, i, date_col);
 71            dbms_output.put(to_char(date_col, 'dd/mm/yyyy hh24:mi:ss') || ';');
 72          else
 73            raise unsupported_type;
 74        end case;
 75      end loop;
 76      dbms_output.new_line;
 77    end loop;
 78 
 79    dbms_sql.close_cursor(cursor_);
 80  exception
 81    when fetch_out_of_seq then
 82      dbms_output.new_line;
 83      dbms_output.put_line('End of data.');
 84    when unsupported_type then
 85      dbms_output.new_line;
 86      dbms_output.put_line('Unsupported type in data set.');
 87    when others then
 88      raise;
 89  end pr_universal_data_printer;
 90  /

Procedure created.

SQL> set serveroutput on;
SQL> set autoprint on;
SQL> exec pr_universal_data_printer('select object_name, object_type, status from all_objects where owner =''SYS'' and rownum < 11');
OBJECT_NAME;OBJECT_TYPE;STATUS;                                                
/1000323d_DelegateInvocationHa;JAVA CLASS;VALID;                               
/1000e8d1_LinkedHashMapValueIt;JAVA CLASS;VALID;                               
/1005bd30_LnkdConstant;JAVA CLASS;VALID;                                       
/10076b23_OraCustomDatumClosur;JAVA CLASS;VALID;                               
/100c1606_StandardMidiFileRead;JAVA CLASS;VALID;                               
/10128284_OpenMBeanAttributeIn;JAVA CLASS;VALID;                               
/101419a4_NormalDataCollector;JAVA CLASS;VALID;                                
/1020ed5e_Param;JAVA CLASS;VALID;                                              
/1023e902_OraCharsetUTFE;JAVA CLASS;VALID;                                     
/10297c91_SAXAttrList;JAVA CLASS;VALID;                                        

PL/SQL procedure successfully completed.

SQL> create or replace procedure pr_universal_data_printer2(p_sql in varchar2) is
  2    fetch_out_of_seq exception;
  3    pragma exception_init(fetch_out_of_seq, -1002);
  4 
  5    unsupported_type exception;
  6    pragma exception_init(unsupported_type, -20001);
  7 
  8    weak_ref_cur sys_refcursor;
  9 
 10    desc_tab dbms_sql.desc_tab2;
 11    cols     binary_integer;
 12    cursor_  binary_integer;
 13 
 14    date_col date;
 15    char_col varchar2(4000);
 16    num_col  number;
 17    exe      number;
 18  begin
 19    if weak_ref_cur%isopen then
 20      close weak_ref_cur;
 21    end if;
 22 
 23    open weak_ref_cur for p_sql;
 24 
 25    cursor_ := dbms_sql.to_cursor_number(weak_ref_cur);
 26 
 27    dbms_sql.describe_columns2(cursor_, cols, desc_tab);
 28 
 29    for i in 1 .. cols loop
 30      --print header
 31      dbms_output.put(desc_tab(i).col_name || ';');
 32 
 33      --define columns
 34      case desc_tab(i).col_type
 35        when dbms_types.typecode_varchar then
 36          dbms_sql.define_column(cursor_, i, char_col, 4000);
 37        when dbms_types.typecode_varchar2 then
 38          dbms_sql.define_column(cursor_, i, char_col, 4000);
 39        when dbms_types.typecode_char then
 40          dbms_sql.define_column(cursor_, i, char_col, 4000);
 41        when dbms_types.typecode_number then
 42          dbms_sql.define_column(cursor_, i, num_col);
 43        when dbms_types.typecode_date then
 44          dbms_sql.define_column(cursor_, i, date_col);
 45        else
 46          raise unsupported_type;
 47      end case;
 48    end loop;
 49 
 50    dbms_output.new_line;
 51 
 52    --fetch row
 53    while dbms_sql.fetch_rows(cursor_) > 0 loop
 54      --assign values according to the column types
 55      for i in 1 .. cols loop
 56        case desc_tab(i).col_type
 57          when dbms_types.typecode_varchar then
 58            dbms_sql.column_value(cursor_, i, char_col);
 59            dbms_output.put(replace(char_col,chr(10),'') || ';');
 60          when dbms_types.typecode_varchar2 then
 61            dbms_sql.column_value(cursor_, i, char_col);
 62            dbms_output.put(replace(char_col,chr(10),'') || ';');
 63          when dbms_types.typecode_char then
 64            dbms_sql.column_value(cursor_, i, char_col);
 65            dbms_output.put(replace(char_col,chr(10),'') || ';');
 66          when dbms_types.typecode_number then
 67            dbms_sql.column_value(cursor_, i, num_col);
 68            dbms_output.put(num_col || ';');
 69          when dbms_types.typecode_date then
 70            dbms_sql.column_value(cursor_, i, date_col);
 71            dbms_output.put(to_char(date_col, 'dd/mm/yyyy hh24:mi:ss') || ';');
 72          else
 73            raise unsupported_type;
 74        end case;
 75      end loop;
 76      dbms_output.new_line;
 77    end loop;
 78 
 79    dbms_sql.close_cursor(cursor_);
 80  exception
 81    when fetch_out_of_seq then
 82      dbms_output.new_line;
 83      dbms_output.put_line('End of data.');
 84    when unsupported_type then
 85      dbms_output.new_line;
 86      dbms_output.put_line('Unsupported type in data set.');
 87    when others then
 88      raise;
 89  end pr_universal_data_printer2;
 90  /

Procedure created.

SQL>  exec pr_universal_data_printer2('select object_name, object_type, status from all_objects where owner =''SYS'' and rownum < 11');
OBJECT_NAME;OBJECT_TYPE;STATUS;                                                
/1000323d_DelegateInvocationHa;JAVA CLASS;VALID;                               
/1000e8d1_LinkedHashMapValueIt;JAVA CLASS;VALID;                               
/1005bd30_LnkdConstant;JAVA CLASS;VALID;                                       
/10076b23_OraCustomDatumClosur;JAVA CLASS;VALID;                               
/100c1606_StandardMidiFileRead;JAVA CLASS;VALID;                               
/10128284_OpenMBeanAttributeIn;JAVA CLASS;VALID;                               
/101419a4_NormalDataCollector;JAVA CLASS;VALID;                                
/1020ed5e_Param;JAVA CLASS;VALID;                                              
/1023e902_OraCharsetUTFE;JAVA CLASS;VALID;

/10297c91_SAXAttrList;JAVA CLASS;VALID;                                        

PL/SQL procedure successfully completed.