怎样用Oracle读写文件bfilename?
怎样用Oracle读写文件bfilename?
Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。 其语法为: CREATE [OR REPLACE] DIRECTORY directory AS 'pathname'; 本案例具体创建如下: create or replace directory exp_dir as '/tmp'; 目录创建以后,就可以把读写权限授予特定用户,具体语法如下: GRANT READ[,WRITE] ON DIRECTORY directory TO username; 例如: grant read, write on directory exp_dir to eygle; 此时用户eygle就拥有了对该目录的读写权限。
让我们看一个简单的测试: SQL> create or replace directory UTL_FILE_DIR as '/opt/oracle/utl_file';Directory created。 SQL> declare 2 fhandle utl_file。
file_type; 3 begin 4 fhandle := utl_file。fopen('UTL_FILE_DIR', 'example。txt', 'w'); 5 utl_file。put_line(fhandle , 'eygle test write one'); 6 utl_file。
put_line(fhandle , 'eygle test write two'); 7 utl_file。fclose(fhandle); 8 end; 9 / PL/SQL procedure successfully completed。
SQL> ! [oracle@jumper 9。2。0]$ more /opt/oracle/utl_file/example。txt eygle test write oneeygle test write two[oracle@jumper 9。
2。0]$ 类似的我们可以通过utl_file来读取文件: SQL> declare 2 fhandle utl_file。file_type; 3 fp_buffer varchar2(4000); 4 begin 5 fhandle := utl_file。
fopen ('UTL_FILE_DIR','example。txt', 'R'); 6 7 utl_file。get_line (fhandle , fp_buffer ); 8 dbms_output。put_line(fp_buffer ); 9 utl_file。
get_line (fhandle , fp_buffer ); 10 dbms_output。put_line(fp_buffer ); 11 utl_file。fclose(fhandle); 12 end; 13 / eygle test write one eygle test write two PL/SQL procedure successfully completed。
可以查询dba_directories查看所有directory。 SQL> select * from dba_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH ------------------------------ ------------------------------ ------------------------------ SYS UTL_FILE_DIR /opt/oracle/utl_fileSYS BDUMP_DIR /opt/oracle/admin/conner/bdumpSYS EXP_DIR /opt/oracle/utl_file 可以使用drop directory删除这些路径。
SQL> drop directory exp_dir; Directory dropped SQL> select * from dba_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH ------------------------------ ------------------------------ ------------------------------ SYS UTL_FILE_DIR /opt/oracle/utl_fileSYS BDUMP_DIR /opt/oracle/admin/conner/bdump create or replace directory USER_DIR as 'E:\PLSQL\310\'; DECLARE v_content VARCHAR2(1800); v_bfile BFILE; amount INT; offset INT :=1; BEGIN v_bfile := bfilename('USER_DIR','test。
TXT'); -- 注意这里的 User_dir 对应上面已经创建好啦的目录 amount :=DBMS_LOB。getlength(v_bfile); DBMS_LOB。OPEN(v_bfile); DBMS_LOB。READ(v_bfile,amount,offset,v_content); DBMS_LOB。
close(v_bfile); DBMS_OUTPUT。PUT_LINE(v_content); END; 以上是我对于这个问题的解答,希望能够帮到大家。
答:blob类型是存放二进制流的,不应该使用这种类型存放字符数据的,应该使用clob类型存放大字段字符数据,存放的二进制流可能是文件,图片或字符,如果存的是图片,你...详情>>
问:同事ip:10.101.107.28 我的IP:10.101.104.23我们在...
答:你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到对方的主机。让她把文件夹共享出来就可以。 如果不是WINDOWS域,那得看你们是不是在一个...详情>>
问:数据结构顺序表的建立,可定义顺序表 #define maxnum elemtyp...
答:打开VC ,然后点击新建,出来界面之后选择Win32 Console Application并输入工程的名称和选择项目的位置,然后出现“一个空工程”,在点击“...详情>>