今天的還真是有些‘糟糕’啊
日文對照:
http://www.tkk7.com/liwei/gallery/image/6749.html
http://www.tkk7.com/liwei/gallery/image/6750.html
092
建御在衣柜里翻找著,拿出有伸縮性的內褲。
“把這個穿上”
“我這樣就可以了”
“別胡鬧了。你準備一直不穿內褲嗎。這種樣子在我的房間里被看到的那天,我的人生會被強制停止的吧”
“沒什么好擔心的。我出現在這里也是一種緣分吧。你的魂魄我會好好接送的”
“只要親善就可以了。我將來的夢想是活到月底作一次一日游。小學六年級的畢業作文里是這么寫的。快穿上”
“這件衣類一點都不適合我”
死神盯著遞過來的內褲,小聲嘟嚷著不滿。
“不可理解。為什么不喜歡我這個樣子。你欠缺著作為人,不,作為男性的資質吧。你不想讓我身心都沐浴著你的‘汁’么。真的沒有疑問”
聽得高興哈哈笑出聲了。現在這里能笑出聲來的只有一個人。死神是自我的冷淡幼女,惡魔根本不像惡魔,甚至是個沒存在意義沉默無個性男。因此笑出聲的肯定是天使。
093
“你說了吧,死神”
戲弄的聲音。像故意展現浴衣中的胸部般前傾著的金發美女天使說,
“如同那邊的惡魔說的,要做的話什么都會做。那邊的人類說了對你‘挺’不起來。也就是你的容貌以及行為對他的下面部分不起作用。如果要我給個提案的話,就是讓他閉上眼睛后立刻用你的手什么的給他的生殖器一點刺激。那樣做后不多久,你就能沐浴在你所期望的新鮮的‘雄汁’中了”
死神自然的低下了頭。
“對忠告害羞。那樣的話,那樣做只是即興吧”
“完全不是即興”
建御嚴肅的用力說道。
“穿上”
之后面向天使,
“你也,這,怎么說呢,不打算顯示你正經的裝扮嗎。不是有翅膀的‘版本’,你也該有像那邊的惡魔那樣日常的服裝吧”
日文對照:
http://www.tkk7.com/liwei/gallery/image/6731.html
http://www.tkk7.com/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.tkk7.com/liwei/gallery/image/6721.html
http://www.tkk7.com/liwei/gallery/image/6722.html
088
————但,就算說到這里,不想說的話,果然還是有。
“完了。以后的就問杵筑吧”
******************************************
“事代和紀這個名字有沒有在哪聽過?”
“事,代,和,紀?”
一邊走著一邊踢著玄關持續的石板的神名回過頭來。在她后面跟著的杵筑搖了下頭避開神名舞動的頭發,加快腳步走到她身邊。
“沒有聽過”
杵筑見證了她十余年的成長過程,在她的臉上,有著只有他才能理解的真實的顏色。神名真的不知道。
“寫成什么字”
杵筑告訴她時,
“那個人怎么了”
“大概死了”
“你為什么知道?”
089
沒有回答這個問題,
“希望你盡可能調查他的事。在哪住,為什么死了,死在什么時候”
“可以”
神名淺淺的微笑著,再次開始向前走。
“你來拜托人做事,上次是什么時候?想起來都是我在拜托你做事。嗯,什么事都會聽,只要是你希望的,無論是什么”
“想知道的只是事代君發生什么了”
“真謙虛呀”
“為什么我想知道那些事,你不問嗎?”
“嗯,反正你以后也會告訴我的吧?你就是那種人。只在必要的時候說必要的話。以后的什么時候,我可很明白”
神名站住了。本宅的門就在正前面。手還沒碰到時門就開始打開。在哪里有人看著吧。
“嘛”
迷人的微笑確實是對著杵筑的。
“她等的不耐煩,或許在房間里發脾氣吧。請早點去吧”