📄 group__g__file.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>OCILIB (C Driver for Oracle): External Large Objects (FILEs)</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.5.4 --><div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul></div><h1>External Large Objects (FILEs)</h1><hr><a name="_details"></a><h2>Detailed Description</h2>External Large Objects (FILEs) were introduced with Oracle 8i<p>Oracle OCI supplies a set APIs to manipulate this datatype.<p>OCILIB encapsulates this API by supplying :<p><ul><li>An <a class="el" href="struct_o_c_i___file.html" title="Oracle External Large objects :.">OCI_File</a> C type</li><li>A set of really easy APIs to manipulate <a class="el" href="struct_o_c_i___file.html" title="Oracle External Large objects :.">OCI_File</a> objects</li></ul><p>OCIB currently supports 2 types of Lobs :<p><ul><li>BFILE : Binary files</li><li>CFILE : Character files</li></ul><p><dl class="warning" compact><dt><b>Warning:</b></dt><dd>FILEs are readonly.</dd></dl><a class="el" href="struct_o_c_i___lob.html" title="Oracle Internal Large objects :.">OCI_Lob</a> objects can be :<p><ul><li>Created as standalone instances</li><li>Used for in/out binding</li><li>Retrieved from select statements</li><li>Used for reading server files content</li></ul><p><dl class="user" compact><dt><b>Files > 4 Go</b></dt><dd></dd></dl><ul><li>New maximum file size limit (128 To) applies to OCI_Files objects.</li><li>See Internal Large Objects (LOBs) section for Files > 4 Go information</li></ul><p><dl class="user" compact><dt><b>Example</b></dt><dd><div class="fragment"><pre class="fragment"><span class="preprocessor">#include "ocilib.h"</span><span class="keywordtype">int</span> main(){ <a class="code" href="struct_o_c_i___connection.html" title="Oracle physical connection.">OCI_Connection</a> *cn; <a class="code" href="struct_o_c_i___statement.html" title="Oracle SQL or PL/SQL statement.">OCI_Statement</a> *st; <a class="code" href="struct_o_c_i___file.html" title="Oracle External Large objects :.">OCI_File</a> *file; <span class="keywordtype">char</span> buffer[256]; <span class="keywordtype">int</span> n; <span class="keywordflow">if</span> (!<a class="code" href="group__g__init.html#gcdb642d75f7c8478e083634144bc813c" title="Initializes the library.">OCI_Initialize</a>(err_handler, NULL, OCI_ENV_DEFAULT)) <span class="keywordflow">return</span> EXIT_FAILURE; cn = <a class="code" href="group__g__connect.html#gdb6e2cdf759587dd81c2fda7c5f44338" title="Create a physical connection to an Oracle database server.">OCI_ConnectionCreate</a>(<span class="stringliteral">"db"</span>, <span class="stringliteral">"usr"</span>, <span class="stringliteral">"pwd"</span>, OCI_SESSION_DEFAULT); st = <a class="code" href="group__g__exec.html#g335822f983af0fb5c529431f06a9a17b" title="Create a statement object and return its handle.">OCI_StatementCreate</a>(cn); file = <a class="code" href="group__g__file.html#g199d6ce1a1231feb56b456ad6cbc2714" title="Create a file object instance.">OCI_FileCreate</a>(cn, OCI_CFILE); <a class="code" href="group__g__file.html#ge31e36e786faf43a2663806a28814c68" title="Set the directory and file name of FILE handle.">OCI_FileSetName</a>(file, <span class="stringliteral">"MYDIR"</span>, <span class="stringliteral">"MyfileName"</span>); <span class="comment">/* check if faile exists */</span> <span class="keywordflow">if</span> (<a class="code" href="group__g__file.html#g634da122ca768f1c219ed08a113da0d3" title="Check if the given file exists on server.">OCI_FileExists</a>(file)) { printf(<span class="stringliteral">"file size : %d\n"</span>, <a class="code" href="group__g__file.html#g0cf778c46524cb185d2d60e1cac672f5" title="Return the size in bytes of a file.">OCI_FileGetSize</a>(file)); printf(<span class="stringliteral">"file dir : %s\n"</span>, <a class="code" href="group__g__file.html#g920ae6408404696e2c76cfc73a568136" title="Return the directory of the given file.">OCI_FileGetDirectory</a>(file)); printf(<span class="stringliteral">"file name : %s\n"</span>, <a class="code" href="group__g__file.html#gc2e9e12274b96e406fcbe59203338d2c" title="Return the name of the given file.">OCI_FileGetName</a>(file)); } <span class="comment">/* bind for inserting into table */</span> <a class="code" href="group__g__exec.html#gd5a7fcffe7d24da001e44636cfc06578" title="Prepare a SQL statement or PL/SQL block.">OCI_Prepare</a>(st, <span class="stringliteral">"insert into my_bfile_table(code, value) values (1, :bfile)"</span>); <a class="code" href="group__g__bind.html#g92cba59c0aabe28391b5e7053baee708" title="Bind a File variable.">OCI_BindFile</a>(st, <span class="stringliteral">":bfile"</span>, file); <a class="code" href="group__g__exec.html#g7189aa353845909aaedc8d5956429450" title="Execute a prepared SQL statement or PL/SQL block.">OCI_Execute</a>(st); <a class="code" href="group__g__transac.html#gee1ba614ed2dc5bd83bf788ca08f3e71" title="Commit current pending changes.">OCI_Commit</a>(cn); <span class="comment">/* free local file object */</span> <a class="code" href="group__g__file.html#gd4b58b6d80e24bb045fb82d78c5cf36a" title="Free a local File object.">OCI_FileFree</a>(file), <span class="comment">/* fetch bfile data from table */</span> <a class="code" href="group__g__exec.html#gf2163ec44e644cc734c393188707985b" title="Parse and execute a SQL statement or PL/SQL block.">OCI_ExecuteStmt</a>(st, <span class="stringliteral">"select code, value from my_bfile_table"</span>); rs = <a class="code" href="group__g__fetch.html#gf2a9e28b66a9538ba0ffb62bffb87c16" title="Retrieve the resultset handle from an executed statement.">OCI_GetResultset</a>(st); <span class="keywordflow">while</span> (<a class="code" href="group__g__fetch.html#g36ac26dcea78f6074421781e401f97ba" title="Fetch the next row of the resultset.">OCI_FetchNext</a>(rs)) { file = <a class="code" href="group__g__fetch.html#g1f4362d4f0ad420ebfaeafca29670d77" title="Return the current File value of the column at the given index in the resultset.">OCI_GetFile</a>(rs, 2); <a class="code" href="group__g__file.html#gf18d3143f2d1e261b5b90becba0726fe" title="Open a file for reading.">OCI_FileOpen</a>(file); printf(<span class="stringliteral">"file size %d\n"</span>, <a class="code" href="group__g__file.html#g0cf778c46524cb185d2d60e1cac672f5" title="Return the size in bytes of a file.">OCI_FileGetSize</a>(file)); printf(<span class="stringliteral">"file dir %s\n"</span>, <a class="code" href="group__g__file.html#g920ae6408404696e2c76cfc73a568136" title="Return the directory of the given file.">OCI_FileGetDirectory</a>(file)); printf(<span class="stringliteral">"file name %s\n"</span>, <a class="code" href="group__g__file.html#gc2e9e12274b96e406fcbe59203338d2c" title="Return the name of the given file.">OCI_FileGetName</a>(file)); <span class="keywordflow">while</span> (n = <a class="code" href="group__g__file.html#gf6400291c6338fc6be4dfdc3a6f5eb55" title="Read a portion of a file into the given buffer.">OCI_FileRead</a>(file, buffer, <span class="keyword">sizeof</span>(buffer)-1)) { buffer[n] = 0; printf(buffer); } <a class="code" href="group__g__file.html#g875e7e20aae8ff4358f1710f12630797" title="Close a file.">OCI_FileClose</a>(file); } <a class="code" href="group__g__init.html#g639706aa8e9689c7ebffc018fac6d3ae" title="Clean up all resources allocated by the library.">OCI_Cleanup</a>(); <span class="keywordflow">return</span> EXIT_SUCCESS;}</pre></div> </dd></dl><p><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT <a class="el" href="struct_o_c_i___file.html">OCI_File</a> *OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#g199d6ce1a1231feb56b456ad6cbc2714">OCI_FileCreate</a> (<a class="el" href="struct_o_c_i___connection.html">OCI_Connection</a> *con, unsigned int type)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Create a file object instance. <a href="#g199d6ce1a1231feb56b456ad6cbc2714"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#gd4b58b6d80e24bb045fb82d78c5cf36a">OCI_FileFree</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Free a local File object. <a href="#gd4b58b6d80e24bb045fb82d78c5cf36a"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT unsigned int OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#gaab496da783753ec077afcc03cde0770">OCI_FileGetType</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Return the type of the given File object. <a href="#gaab496da783753ec077afcc03cde0770"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#gfb3e54d66132f999c576adf15fdd581e">OCI_FileSeek</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file, big_uint offset, unsigned int mode)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Perfom a seek operation on the <a class="el" href="struct_o_c_i___file.html" title="Oracle External Large objects :.">OCI_File</a> content buffer. <a href="#gfb3e54d66132f999c576adf15fdd581e"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT big_uint OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#g7032e262e260dd6f50515058b722f951">OCI_FileGetOffset</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Return the current position in the file. <a href="#g7032e262e260dd6f50515058b722f951"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT unsigned int OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#gf6400291c6338fc6be4dfdc3a6f5eb55">OCI_FileRead</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file, void *buffer, unsigned int len)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Read a portion of a file into the given buffer. <a href="#gf6400291c6338fc6be4dfdc3a6f5eb55"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT big_uint OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#g0cf778c46524cb185d2d60e1cac672f5">OCI_FileGetSize</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Return the size in bytes of a file. <a href="#g0cf778c46524cb185d2d60e1cac672f5"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#g634da122ca768f1c219ed08a113da0d3">OCI_FileExists</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Check if the given file exists on server. <a href="#g634da122ca768f1c219ed08a113da0d3"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#ge31e36e786faf43a2663806a28814c68">OCI_FileSetName</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file, const mtext *dir, const mtext *name)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Set the directory and file name of FILE handle. <a href="#ge31e36e786faf43a2663806a28814c68"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT const mtext *OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#g920ae6408404696e2c76cfc73a568136">OCI_FileGetDirectory</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Return the directory of the given file. <a href="#g920ae6408404696e2c76cfc73a568136"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT const mtext *OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#gc2e9e12274b96e406fcbe59203338d2c">OCI_FileGetName</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Return the name of the given file. <a href="#gc2e9e12274b96e406fcbe59203338d2c"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#gf18d3143f2d1e261b5b90becba0726fe">OCI_FileOpen</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Open a file for reading. <a href="#gf18d3143f2d1e261b5b90becba0726fe"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#gd07691fd580272892fb87d4549628161">OCI_FileIsOpen</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Check if the specified file is opened within the file handle. <a href="#gd07691fd580272892fb87d4549628161"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#g875e7e20aae8ff4358f1710f12630797">OCI_FileClose</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Close a file. <a href="#g875e7e20aae8ff4358f1710f12630797"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#g0127f1d7bcef3d1883144bb2e70299bc">OCI_FileIsEqual</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file, <a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file2)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two file handle for equality. <a href="#g0127f1d7bcef3d1883144bb2e70299bc"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">OCI_EXPORT boolean OCI_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g__file.html#g2a37633ddf3d9c22575a85cee7b75f42">OCI_FileAssign</a> (<a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file, <a class="el" href="struct_o_c_i___file.html">OCI_File</a> *file_src)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Assign a file to another one. <a href="#g2a37633ddf3d9c22575a85cee7b75f42"></a><br></td></tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="g2a37633ddf3d9c22575a85cee7b75f42"></a><!-- doxytag: member="ocilib.h::OCI_FileAssign" ref="g2a37633ddf3d9c22575a85cee7b75f42" args="(OCI_File *file, OCI_File *file_src)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">OCI_EXPORT boolean OCI_API OCI_FileAssign </td> <td>(</td> <td class="paramtype"><a class="el" href="struct_o_c_i___file.html">OCI_File</a> * </td> <td class="paramname"> <em>file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="struct_o_c_i___file.html">OCI_File</a> * </td> <td class="paramname"> <em>file_src</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Assign a file to another one. <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>- Destination File handle </td></tr> <tr><td valign="top"></td><td valign="top"><em>file_src</em> </td><td>- Source File handle</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE on success otherwise FALSE </dd></dl><p>Definition at line <a class="el" href="file_8c-source.html#l00592">592</a> of file <a class="el" href="file_8c-source.html">file.c</a>.</p><p>References <a class="el" href="ocilib__types_8h-source.html#l00418">OCI_File::con</a>, <a class="el" href="ocilib__types_8h-source.html#l00237">OCI_Connection::cxt</a>, <a class="el" href="ocilib__types_8h-source.html#l00235">OCI_Connection::err</a>, <a class="el" href="ocilib__types_8h-source.html#l00416">OCI_File::handle</a>, and <a class="el" href="ocilib__types_8h-source.html#l00417">OCI_File::hstate</a>.</p></div></div><p><a class="anchor" name="g875e7e20aae8ff4358f1710f12630797"></a><!-- doxytag: member="ocilib.h::OCI_FileClose" ref="g875e7e20aae8ff4358f1710f12630797" args="(OCI_File *file)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">OCI_EXPORT boolean OCI_API OCI_FileClose </td> <td>(</td> <td class="paramtype"><a class="el" href="struct_o_c_i___file.html">OCI_File</a> * </td> <td class="paramname"> <em>file</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Close a file. <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>- File handle</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE on success otherwise FALSE </dd></dl><p>Definition at line <a class="el" href="file_8c-source.html#l00543">543</a> of file <a class="el" href="file_8c-source.html">file.c</a>.</p><p>References <a class="el" href="ocilib__types_8h-source.html#l00418">OCI_File::con</a>, <a class="el" href="ocilib__types_8h-source.html#l00237">OCI_Connection::cxt</a>, <a class="el" href="ocilib__types_8h-source.html#l00235">OCI_Connection::err</a>, <a class="el" href="ocilib__types_8h-source.html#l00416">OCI_File::handle</a>, and <a class="el" href="ocilib__types_8h-source.html#l00239">OCI_Connection::nb_files</a>.</p></div></div><p><a class="anchor" name="g199d6ce1a1231feb56b456ad6cbc2714"></a><!-- doxytag: member="ocilib.h::OCI_FileCreate" ref="g199d6ce1a1231feb56b456ad6cbc2714" args="(OCI_Connection *con, unsigned int type)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">OCI_EXPORT <a class="el" href="struct_o_c_i___file.html">OCI_File</a>* OCI_API OCI_FileCreate </td> <td>(</td> <td class="paramtype"><a class="el" href="struct_o_c_i___connection.html">OCI_Connection</a> * </td> <td class="paramname"> <em>con</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table></div><div class="memdoc"><p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -