少しづつ Oracle
  【 ディレクトリオブジェクトの作成 】
1. ディレクトリオブジェクトの作成
2. 読込みサンプルコード

手順
  • ディレクトリオブジェクトを作成する場合は、CREATE ANY DIRECTORY
    システム権限が必要です

  • 権限を持つユーザでログインし、以下の SQL 文を実行します

  •  
    CREATE DIRECTORY ディレクトリオブジェクト名 AS 'ディレクトリのパス';
    GRANT READ,WRITE ON DIRECTORY ディレクトリオブジェクト名 TO ユーザ名;
    
  • ディレクトリオブジェクト名は、例えば TEXT_DIR のような名前を指定します

  • ディレクトリのパスは d:\temp のような形式で、最後に \ は必要ありません

  • ユーザ名は PUBLIC でもかまいません

  • すべてのディレクトリは 1 つのネームスペースに作成されるため、個々のユ
    ーザーのスキーマで所有されるわけではありません

  • 以前は UTL_FILE ファンクションのアクセス可能なディレクトリは、UTL_FILE_DIR
    パラメータを使用して初期化ファイルに指定してきました。しかし、UTL_FILE_DIR
    へのアクセスは推奨されません。CREATE DIRECTORY 機能の使用が推奨され
    ます


  • 確認
  • ディレクトリオブジェクトが使用できるどうかは、権限を与えたユーザにログインして
    以下の SQL 文を実行します

  •  
    SELECT * FROM ALL_DIRECTORIES;
    


  • プローシージャの作成には、CREATE PROCEDURE システム権限が必要です

  • 権限を持つユーザでログインして、GRANT CREATE PROCEDURE TO ユーザ名 を実行して下さい

  • 付与された権限の確認は、そのユーザでログインして SELECT * FROM USER_SYS_PRIVS で行い
    ます

  • SQL*Plus で実行前に SET SERVEROUTPUT ON でDBMS_OUTPUT.PUT_LINE の結果が表示される
    ようにして下さい
  • /*
    /*===========================================================================
    	テキストファイル読込み ( TEXT_GET )
    ===========================================================================*/
    CREATE or REPLACE PROCEDURE TEXT_GET
    	AS
     
    	TEXT_BUFFER		VARCHAR2(2000);		-- 読込バッファ
    	FILEHANDLE		UTL_FILE.FILE_TYPE;
     
    BEGIN
     
    	FILEHANDLE := UTL_FILE.FOPEN( 'TEXT_DIR', 'list.txt', 'r' );
     
    	LOOP
    		BEGIN
    			UTL_FILE.GET_LINE( FILEHANDLE,TEXT_BUFFER );
    			EXCEPTION
    				WHEN NO_DATA_FOUND THEN
    					EXIT;
    		END;
     
    		DBMS_OUTPUT.PUT_LINE( TEXT_BUFFER );
     
    	END LOOP;
     
    	UTL_FILE.FCLOSE( FILEHANDLE );
     
     
    END TEXT_GET;
    /