posts - 189,comments - 115,trackbacks - 0
          如何在ORACLE的PL/SQL中將數(shù)據(jù)寫入文件
          ?

          在數(shù)據(jù)庫的開發(fā)中,當(dāng)PL/SQL語句很復(fù)雜的時候,我想寫一些Log,就像java的Log4j那樣。這樣就可以很好的跟蹤程序的運行情況。在網(wǎng)上找到的文章不是很好用,修改了一下。

          1:在Oracle服務(wù)器上建立一個目錄并指定權(quán)限(我這個是unix的。windows用c:\tmp之類的就行)

          CREATE DIRECTORY TEMP AS '/tmp';
          GRANT READ,WRITE ON DIRECTORY TEMP TO PUBLIC;
          GRANT?? EXECUTE? ON? SYS.UTL_FILE? TO? YOU_USER_NAME;

          如果出現(xiàn)權(quán)限錯誤的話,注意自己登陸的方式,我是用oralce用戶TelNet到Unix上的,然后connect / as sysdba。(windows 用戶應(yīng)該是:sys用戶登錄到數(shù)據(jù)庫(ora9i):conn sys/password@oraclesid as sysdba ,sys用戶的缺省密碼和system一樣,都是manager

          2:寫Log文件的SQL語句如下:

          declare
          ? file_handle utl_file.file_type;
          ? buff varchar2(20);
          ? cursor c1 is select? acloumn from t_atable;
          begin
          ? file_handle := utl_file.fopen('TEMP',log.txt','w');
          ? open c1;
          ? loop
          ??? fetch c1 into buff;
          ??? exit when c1%notfound;
          ??? utl_file.put_line(file_handle,buff);
          ?? end loop;
          ?? close c1;
          ?? utl_file.fclose(file_handle);
          end;

          這樣,就應(yīng)該可以了,file_handle := utl_file.fopen('TEMP',log.txt','w');中的'w'是指write,也可以是'a',append.

          封裝后是這樣的:

          procedure writeLog(logMessage in Varchar2) is
          ? begin
          ??? IF logSwitch THEN
          ????? file_handle := utl_file.fopen('TEMP','x.txt','w');
          ????? utl_file.put_line(file_handle,logMessage);
          ????? utl_file.fclose(file_handle);
          ??? END IF;
          ? end;

          其中l(wèi)ogSwitch 是boolean型,我定義在包中的。如果直接用的話可以是procedure writeLog(logMessage in Varchar2, logSwitch in boolean )

          posted on 2006-03-25 20:34 MEYE 閱讀(1269) 評論(0)  編輯  收藏 所屬分類: NEWS
          主站蜘蛛池模板: 盘山县| 榆林市| 九江县| 南漳县| 和静县| 历史| 岱山县| 和龙市| 晋中市| 靖边县| 庄河市| 驻马店市| 清涧县| 涿鹿县| 柳州市| 灵武市| 乌鲁木齐市| 乳源| 嘉峪关市| 肥乡县| 凤冈县| 牟定县| 台东县| 旬阳县| 丰原市| 简阳市| 鹰潭市| 宁晋县| 正定县| 曲靖市| 岳池县| 南京市| 富蕴县| 蒙城县| 三江| 长春市| 赤水市| 木里| 永济市| 安乡县| 黄陵县|