今天的还真是有些‘糟糕’啊
日文对照:
http://www.blogjava.net/liwei/gallery/image/6749.html
http://www.blogjava.net/liwei/gallery/image/6750.html
092
建御在衣柜里翻找着,拿出有伸缩性的内裤。
“把这个穿上”
“我这样就可以了”
“别胡闹了。你准备一直不穿内裤吗。这种样子在我的房间里被看到的那天,我的人生会被强制停止的吧”
“没什么好担心的。我出现在这里也是一种缘分吧。你的魂魄我会好好接送的”
“只要亲善就可以了。我将来的梦想是活到月底作一次一日游。小学六年级的毕业作文里是这么写的。快穿上”
“这件衣类一点都不适合我”
死神盯着递过来的内裤,小声嘟嚷着不满。
“不可理解。为什么不喜欢我这个样子。你欠缺着作为人,不,作为男性的资质吧。你不想让我身心都沐浴着你的‘汁’么。真的没有疑问”
听得高兴哈哈笑出声了。现在这里能笑出声来的只有一个人。死神是自我的冷淡幼女,恶魔根本不像恶魔,甚至是个没存在意义沉默无个性男。因此笑出声的肯定是天使。
093
“你说了吧,死神”
戏弄的声音。像故意展现浴衣中的胸部般前倾着的金发美女天使说,
“如同那边的恶魔说的,要做的话什么都会做。那边的人类说了对你‘挺’不起来。也就是你的容貌以及行为对他的下面部分不起作用。如果要我给个提案的话,就是让他闭上眼睛后立刻用你的手什么的给他的生殖器一点刺激。那样做后不多久,你就能沐浴在你所期望的新鲜的‘雄汁’中了”
死神自然的低下了头。
“对忠告害羞。那样的话,那样做只是即兴吧”
“完全不是即兴”
建御严肃的用力说道。
“穿上”
之后面向天使,
“你也,这,怎么说呢,不打算显示你正经的装扮吗。不是有翅膀的‘版本’,你也该有像那边的恶魔那样日常的服装吧”
日文对照:
http://www.blogjava.net/liwei/gallery/image/6731.html
http://www.blogjava.net/liwei/gallery/image/6732.html
090
就是为这事他才来的。事代的事是附带的。虽然对变成幽灵的少年很抱歉,但杵筑没想过说抱歉的话。
踏入宅内的杵筑背后的门关上了。神名没有跟来。
变得安静的屋内感受不到人的气息。但这个家应该有很多人不分昼夜的存在着,工作着。拥有乌衣这个姓的只有神名,美和与她们的父亲,但他知道伺候她们的佣人有很大数量。只是没见到过他们的身影。
虽然隐藏身形消除气息,但他们是确实存在的。
突然打开点缀在道路旁的房间的话,那里一定会有人说“欢迎光临,杵筑大人”,他这样想着,但他没有试过。有必要的话,他们自己会自动出现吧。
杵筑在无人的道路上前进,登上无人的台阶,直向美和的寝室。他应该打开的门只有那一扇。
***********************************
必须要思考了。于是,建御思考了。
091
“你在思考些什么呢”
对着问话的死神,建御投出天真的眼神。
“你们啦,真的不打算从这里出去吗”
事代像害羞般缩着身体,在体育座那里将薄薄的身体挤向墙壁。没有了阴沉着脸的幽灵那样的阴气。虽然也没看到开朗快乐的神情,但也不是完全透明的家伙呀,建御这样想着。想想事代的事,本身不那么明显或许是他的性格。
“我不走”
死神说话了。
“想想我能去哪呢。不了解我降到遥远的人界来的心情,你想说让我去蚊虫猖獗的河边桥下去露宿吗。你真是畜牲不如的家伙”
“擅自飞进来又是什么说法。看看窗户。窗门都坏了,怎样才能防止蚊虫进来。快付玻璃钱。应该带着钱来的吧”
“不可能带着来吧。没看到吗。我可是手无寸铁,赤身裸体来的。什么都没藏着。这么说你想调查下那个穴”
死神又开始准备脱训练服。
“说了不要脱!你再那样做的话就把你捆包进纸箱扔到去南美的船上去,你这家伙!稍微等等”
最近用到了Oracle的包UTL_FILE,网上却没找到关于它的函数,过程使用说明,虽然都不是很难的东西,但简单列出来,也能提高些效率。
于是有了这篇文。
以下翻译来自《Oracle Built-in Packages》的第六章,只翻译了部分,想了解的更详细,请参考原文。http://www.oreilly.com/catalog/oraclebip/chapter/ch06.html
FOPEN
IS_OPEN
GET_LINE
PUT
NEW_LINE
PUT_LINE
PUTF
FFLUSH
FCLOSE
FCLOSE_ALL
UTL_FILE.FOPEN 用法
FOPEN会打开指定文件并返回一个文件句柄用于操作文件。
所有PL/SQL版本: Oracle 8.0版及以上:
FUNCTION UTL_FILE.FOPEN ( FUNCTION UTL_FILE.FOPEN (
location IN VARCHAR2, location IN VARCHAR2,
filename IN VARCHAR2, filename IN VARCHAR2,
open_mode IN VARCHAR2) open_mode IN VARCHAR2,
RETURN file_type; max_linesize IN BINARY_INTEGER)
RETURN file_type;
参数
location
文件地址
filename
文件名
openmode
打开文件的模式(参见下面说明)
max_linesize
文件每行最大的字符数,包括换行符。最小为1,最大为32767
3种文件打开模式:
R 只读模式。一般配合UTL_FILE的GET_LINE来读文件。
W 写(替换)模式。文件的所有行会被删除。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用
A 写(附加)模式。原文件的所有行会被保留。在最末尾行附加新行。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用
打开文件时注意以下几点:
文件路径和文件名合起来必须表示操作系统中一个合法的文件。
文件路径必须存在并可访问;FOPEN并不会新建一个文件夹。
如果你想打开文件进行读操作,文件必须存在;如果你想打开文件进行写操作,文件不存在时,会新建一个文件。
如果你想打开文件进行附加操作,文件必须存在。A模式不同于W模式。文件不存在时,会抛出INVALID_OPERATION异常。
FOPEN 会抛出以下异常
UTL_FILE.INVALID_MODE
UTL_FILE.INVALID_OPERATION
UTL_FILE.INVALID_PATH
UTL_FILE.INVALID_MAXLINESIZE
UTL_FILE.IS_OPEN用法
如果文件句柄指定的文件已打开,返回TRUE,否则FALSE
FUNCTION UTL_FILE.IS_OPEN (file IN UTL_FILE.FILE_TYPE) RETURN BOOLEAN;
UTL_FILE只提供一个方法去读取数据:GET_LINE
UTL_FILE.GET_LINE用法
读取指定文件的一行到提供的缓存。
PROCEDURE UTL_FILE.GET_LINE
(file IN UTL_FILE.FILE_TYPE,
buffer OUT VARCHAR2);
file
由FOPEN返回的文件句柄
buffer
读取的一行数据的存放缓存
buffer必须足够大。否则,会抛出VALUE_ERROR 异常。行终止符不会被传进buffer。
异常
NO_DATA_FOUND
VALUE_ERROR
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.READ_ERROR
UTL_FILE.PUT用法
在当前行输出数据
PROCEDURE UTL_FILE.PUT
(file IN UTL_FILE.FILE_TYPE,
buffer OUT VARCHAR2);
file
由FOPEN返回的文件句柄
buffer
包含要写入文件的数据缓存;Oracle8.0.3及以上最大允许32kB,早期版本只有1023B
UTL_FILE.PUT输出数据时不会附加行终止符。
UTL_FILE.PUT会产生以下异常
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR
UTL_FILE.NEW_LINE
在当前位置输出新行或行终止符,必须使用NEW_LINE来结束当前行,或者使用PUT_LINE输出带有行终止符的完整行数据。
PROCEDURE UTL_FILE.NEW_LINE
(file IN UTL_FILE.FILE_TYPE,
lines IN NATURAL := 1);
file
由FOPEN返回的文件句柄
lines
要插入的行数
如果不指定lines参数,NEW_LINE会使用默认值1,在当前行尾换行。如果要插入一个空白行,可以使用以下语句:
UTL_FILE.NEW_LINE (my_file, 2);
如果lines参数为0或负数,什么都不会写入文件。
NEW_LINE会产生以下异常
VALUE_ERROR
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR
例子
如果要在UTL_FILE.PUT后立刻换行,可以如下例所示:
PROCEDURE add_line (file_in IN UTL_FILE.FILE_TYPE, line_in IN VARCHAR2)
IS
BEGIN
UTL_FILE.PUT (file_in, line_in);
UTL_FILE.NEW_LINE (file_in);
END;
UTL_FILE.PUT_LINE
输出一个字符串以及一个与系统有关的行终止符
PROCEDURE UTL_FILE.PUT_LINE
(file IN UTL_FILE.FILE_TYPE,
buffer IN VARCHAR2);
file
由FOPEN返回的文件句柄
buffer
包含要写入文件的数据缓存;Oracle8.0.3及以上最大允许32kB,早期版本只有1023B
在调用UTL_FILE.PUT_LINE前,必须先打开文件。
UTL_FILE.PUT_LINE会产生以下异常
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR
例子
这里利用UTL_FILE.PUT_LINE从表emp读取数据到文件:
PROCEDURE emp2file
IS
fileID UTL_FILE.FILE_TYPE;
BEGIN
fileID := UTL_FILE.FOPEN ('/tmp', 'emp.dat', 'W');
/* Quick and dirty construction here! */
FOR emprec IN (SELECT * FROM emp)
LOOP
UTL_FILE.PUT_LINE
(TO_CHAR (emprec.empno) || ',' ||
emprec.ename || ',' ||
...
TO_CHAR (emprec.deptno));
END LOOP;
UTL_FILE.FCLOSE (fileID);
END;
PUT_LINE相当于PUT后加上NEW_LINE;也相当于PUTF的格式串"%s\n"。
UTL_FILE.PUTF
以一个模版样式输出至多5个字符串,类似C中的printf
PROCEDURE UTL_FILE.PUTF
(file IN FILE_TYPE
,format IN VARCHAR2
,arg1 IN VARCHAR2 DEFAULT NULL
,arg2 IN VARCHAR2 DEFAULT NULL
,arg3 IN VARCHAR2 DEFAULT NULL
,arg4 IN VARCHAR2 DEFAULT NULL
,arg5 IN VARCHAR2 DEFAULT NULL);
file
由FOPEN返回的文件句柄
format
决定格式的格式串
argN
可选的5个参数,最多5个
格式串可使用以下样式
%s
在格式串中可以使用最多5个%s,与后面的5个参数一一对应
\n
换行符。在格式串中没有个数限制
%s会被后面的参数依次填充,如果没有足够的参数,%s会被忽视,不被写入文件
UTL_FILE.PUTF会产生以下异常
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR
UTL_FILE.FFLUSH
确保所有数据写入文件。
PROCEDURE UTL_FILE.FFLUSH (file IN UTL_FILE.FILE_TYPE);
file
由FOPEN返回的文件句柄
操作系统可能会缓存数据来提高性能。因此可能调用put后,打开文件却看不到写入的数据。在关闭文件前要读取数据的话可以使用UTL_FILE.FFLUSH。
典型的使用方法包括分析执行进度和调试纪录。
UTL_FILE.FFLUSH会产生以下异常
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR
UTL_FILE.FCLOSE
关闭文件
PROCEDURE UTL_FILE.FCLOSE (file IN OUT FILE_TYPE);
file
由FOPEN返回的文件句柄
注意file是一个IN OUT参数,因为在关闭文件后会设置为NULL
当试图关闭文件时有缓存数据未写入文件,会抛出WRITE_ERROR异常
UTL_FILE.FCLOSE会产生以下异常
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.WRITE_ERROR
UTL_FILE.FCLOSE_ALL
关闭所有已打开的文件
PROCEDURE UTL_FILE.FCLOSE_ALL;
在结束程序时要确保所有打开的文件已关闭,可使用FCLOSE_ALL
也可以在EXCEPTION使用,当异常退出时,文件也会被关闭。
EXCEPTION
WHEN OTHERS
THEN
UTL_FILE.FCLOSE_ALL;
... other clean up activities ...
END;
注意:当使用FCLOSE_ALL关闭所有文件时,文件句柄并不会标记为NULL,使用IS_OPEN会返回TRUE。但是,那些关闭的文件不能执行读写操作(除非你再次打开文件)。
UTL_FILE.FCLOSE_ALL会产生以下异常
UTL_FILE.WRITE_ERROR
日文对照:
http://www.blogjava.net/liwei/gallery/image/6721.html
http://www.blogjava.net/liwei/gallery/image/6722.html
088
————但,就算说到这里,不想说的话,果然还是有。
“完了。以后的就问杵筑吧”
******************************************
“事代和纪这个名字有没有在哪听过?”
“事,代,和,纪?”
一边走着一边踢着玄关持续的石板的神名回过头来。在她后面跟着的杵筑摇了下头避开神名舞动的头发,加快脚步走到她身边。
“没有听过”
杵筑见证了她十余年的成长过程,在她的脸上,有着只有他才能理解的真实的颜色。神名真的不知道。
“写成什么字”
杵筑告诉她时,
“那个人怎么了”
“大概死了”
“你为什么知道?”
089
没有回答这个问题,
“希望你尽可能调查他的事。在哪住,为什么死了,死在什么时候”
“可以”
神名浅浅的微笑着,再次开始向前走。
“你来拜托人做事,上次是什么时候?想起来都是我在拜托你做事。嗯,什么事都会听,只要是你希望的,无论是什么”
“想知道的只是事代君发生什么了”
“真谦虚呀”
“为什么我想知道那些事,你不问吗?”
“嗯,反正你以后也会告诉我的吧?你就是那种人。只在必要的时候说必要的话。以后的什么时候,我可很明白”
神名站住了。本宅的门就在正前面。手还没碰到时门就开始打开。在哪里有人看着吧。
“嘛”
迷人的微笑确实是对着杵筑的。
“她等的不耐烦,或许在房间里发脾气吧。请早点去吧”