<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FLarge_Objects%2Fbfilename</id>
		<title>Oracle PL/SQL Tutorial/Large Objects/bfilename - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FLarge_Objects%2Fbfilename"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/bfilename&amp;action=history"/>
		<updated>2026-04-30T06:20:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/bfilename&amp;diff=4221&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/bfilename&amp;diff=4221&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/bfilename&amp;diff=4222&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Large_Objects/bfilename&amp;diff=4222&amp;oldid=prev"/>
				<updated>2010-05-26T10:08:57Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== bfilename function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type vcArray as table of varchar2(4000)&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  function trace_file_contents( p_filename in varchar2 )&lt;br /&gt;
  3  return vcArray&lt;br /&gt;
  4  pipelined&lt;br /&gt;
  5  as&lt;br /&gt;
  6      l_bfile       bfile := bfilename(&amp;quot;UDUMP_DIR&amp;quot;,p_filename);&lt;br /&gt;
  7      l_last        number := 1;&lt;br /&gt;
  8      l_current     number;&lt;br /&gt;
  9  begin&lt;br /&gt;
 10      select rownum into l_current&lt;br /&gt;
 11        from user_avail_trace_files&lt;br /&gt;
 12       where filename = p_filename;&lt;br /&gt;
 13&lt;br /&gt;
 14      dbms_lob.fileopen( l_bfile );&lt;br /&gt;
 15      loop&lt;br /&gt;
 16          l_current := dbms_lob.instr( l_bfile, &amp;quot;0A&amp;quot;, l_last, 1 );&lt;br /&gt;
 17          exit when (nvl(l_current,0) = 0);&lt;br /&gt;
 18          pipe row(utl_raw.cast_to_varchar2(dbms_lob.substr( l_bfile, l_current-l_last+1,l_last ) ));&lt;br /&gt;
 19          l_last := l_current+1;&lt;br /&gt;
 20      end loop;&lt;br /&gt;
 21      dbms_lob.fileclose(l_bfile);&lt;br /&gt;
 22      return;&lt;br /&gt;
 23  end;&lt;br /&gt;
 24  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Stored procedure to read the data from the BFILE into the clob clob and display the new clob contents.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable&lt;br /&gt;
  2  (key NUMBER PRIMARY KEY&lt;br /&gt;
  3  ,col_blob BLOB&lt;br /&gt;
  4  ,col_clob CLOB);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myTable (key, col_blob, col_clob)&lt;br /&gt;
  2  VALUES (1, HEXTORAW(&amp;quot;101F&amp;quot;), &amp;quot;ZYXW&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; ALTER TABLE myTable add (col_bfile BFILE);&lt;br /&gt;
Table altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE sp_bfile_read&lt;br /&gt;
  2  IS&lt;br /&gt;
  3      v_fileloc   BFILE;&lt;br /&gt;
  4      v_col_clob  CLOB;&lt;br /&gt;
  5      v_filename  VARCHAR2(2000);&lt;br /&gt;
  6      v_amount    NUMBER := 80;&lt;br /&gt;
  7      v_offset    NUMBER := 1;&lt;br /&gt;
  8      v_buffer    VARCHAR2(80);&lt;br /&gt;
  9&lt;br /&gt;
 10      v_dir   VARCHAR2(80) := &amp;quot;INFILE&amp;quot;;&lt;br /&gt;
 11&lt;br /&gt;
 12  BEGIN&lt;br /&gt;
 13      v_fileloc := BFILENAME (v_dir, &amp;quot;b_file.txt&amp;quot;);&lt;br /&gt;
 14&lt;br /&gt;
 15      DBMS_LOB.FILEOPEN (v_fileloc, DBMS_LOB.FILE_READONLY);&lt;br /&gt;
 16&lt;br /&gt;
 17      SELECT col_clob&lt;br /&gt;
 18      INTO v_col_clob&lt;br /&gt;
 19      FROM myTable&lt;br /&gt;
 20      WHERE key = 2&lt;br /&gt;
 21      FOR UPDATE;&lt;br /&gt;
 22&lt;br /&gt;
 23      DBMS_LOB.LOADFROMFILE (v_col_clob, v_fileloc, DBMS_LOB.GETLENGTH (v_fileloc) );&lt;br /&gt;
 24      DBMS_LOB.READ (v_col_clob, v_amount, v_offset, v_buffer);&lt;br /&gt;
 25&lt;br /&gt;
 26      DBMS_OUTPUT.PUT_LINE (v_buffer);&lt;br /&gt;
 27&lt;br /&gt;
 28      DBMS_LOB.FILECLOSE (v_fileloc);&lt;br /&gt;
 29   EXCEPTION&lt;br /&gt;
 30      WHEN NO_DATA_FOUND THEN&lt;br /&gt;
 31      DBMS_LOB.FILECLOSEALL;&lt;br /&gt;
 32      RAISE_APPLICATION_ERROR(-20001, &amp;quot;No data found!&amp;quot;);&lt;br /&gt;
 33&lt;br /&gt;
 34      WHEN VALUE_ERROR THEN&lt;br /&gt;
 35      DBMS_LOB.FILECLOSEALL;&lt;br /&gt;
 36      RAISE_APPLICATION_ERROR(-20001, &amp;quot;Value Error!&amp;quot;);&lt;br /&gt;
 37&lt;br /&gt;
 38      WHEN DBMS_LOB.INVALID_ARGVAL THEN&lt;br /&gt;
 39      DBMS_LOB.FILECLOSEALL;&lt;br /&gt;
 40      RAISE_APPLICATION_ERROR(-20001, &amp;quot;Read only mode not specified&amp;quot;);&lt;br /&gt;
 41&lt;br /&gt;
 42      WHEN OTHERS THEN&lt;br /&gt;
 43      DBMS_LOB.FILECLOSEALL;&lt;br /&gt;
 44      RAISE_APPLICATION_ERROR(-20009, &amp;quot;Other exception raised: &amp;quot; || SQLCODE);&lt;br /&gt;
 45  END;&lt;br /&gt;
 46  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec sp_bfile_read&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use the file named b_file.txt and attach it to the myTable table in the col_bfile column.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable&lt;br /&gt;
  2  (key NUMBER PRIMARY KEY&lt;br /&gt;
  3  ,col_blob BLOB&lt;br /&gt;
  4  ,col_clob CLOB);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myTable (key, col_blob, col_clob)&lt;br /&gt;
  2  VALUES (1, HEXTORAW(&amp;quot;101F&amp;quot;), &amp;quot;ZYXW&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; ALTER TABLE myTable add (col_bfile BFILE);&lt;br /&gt;
Table altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE myTable&lt;br /&gt;
  2  SET col_bfile = BFILENAME (&amp;quot;INFILE&amp;quot;, &amp;quot;b_file.txt&amp;quot;)&lt;br /&gt;
  3  WHERE key = 1;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>