オラクル超初心者なので、間違っていたらゴメンなさい。(確認できる環境もないので)
「SQL*Plus で文字列だけにダブルクォートをつけて csv 形式で出力する SQL」を参考に考えると、恐らく以下のように「"」(=ダブルクォート)を「''」(=シングルクォート×2)で括る必要があるのではないかと思います。
SQL
1
2vOUTPUT := ''"'' || 'しゅつりょく' || ''"'';
3UTL_FILE.PUT_LINE(vHANDLE,vOUTPUT);
そのように考えた理由ですが(大部分が推測です…)、まず前提知識として
「vOUTPUT := '"' || 'しゅつりょく' || '"'; 」 と記述した場合、変数 vOUTPUT の中身は
「"」+「しゅつりょく」+「"」
ですが、これは「しゅつりょく」というリテラルの「引用識別子」であり、「"しゅつりょく" 」というリテラルを表している訳ではありません。(…と思います。)
そこで、「''」(=シングルクォート×2)→「'」(=シングルクォートを表すリテラル)で「"」(=ダブルクォート)を括って「'"'」というリテラルを作成し、
「'"'」+「しゅつりょく」+「'"'」
を変数「vOUTPUT」へ代入してやると、「UTL_FILE.PUT_LINE(vHANDLE,vOUTPUT); 」の実行時には「”」(=ダブルクォート)が「’」(=シングルクォート)で括られてエスケープされているので
「UTL_FILE.PUT_LINE(vHANDLE,"しゅつりょく"); 」
を実行するに等しく、想定通り「"しゅつりょく" 」という文字列がファイル出力されることになると思います。
なお、こんな実装例もありましたので、ご参考 まで。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。