⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 group__g__demo.html

📁 ORACLE编程的好东西,纯C写的OCI封装.很好用,支持数据池.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<span class="comment"> * test_bind2</span><span class="comment"> * ------------------------------------------------------------------------ */</span><span class="keywordtype">void</span> test_bind2(<span class="keywordtype">void</span>){        <a class="code" href="struct_o_c_i___lob.html" title="Oracle Internal Large objects :.">OCI_Lob</a> *lob;    <a class="code" href="struct_o_c_i___date.html" title="Oracle internal date representation.">OCI_Date</a> *date;    <a class="code" href="struct_o_c_i___file.html" title="Oracle External Large objects :.">OCI_File</a> *file;        <span class="keywordtype">int</span> i;    <span class="keywordtype">double</span> flt;    print_text(<span class="stringliteral">"\n&gt;&gt;&gt;&gt;&gt; SINGLE BINDING \n\n"</span>);   <span class="comment">/* prepare SQL */</span>    <a class="code" href="group__g__exec.html#gd5a7fcffe7d24da001e44636cfc06578" title="Prepare a SQL statement or PL/SQL block.">OCI_Prepare</a>(st, MT(<span class="stringliteral">"insert into test_array "</span>)                    MT(<span class="stringliteral">"( "</span>)                    MT(<span class="stringliteral">"   val_int,  val_flt, val_str, val_date, "</span>)                    MT( <span class="stringliteral">"   val_lob, val_file "</span>)                    MT( <span class="stringliteral">") "</span> )                    MT( <span class="stringliteral">"values "</span>)                    MT( <span class="stringliteral">"( "</span>)                    MT( <span class="stringliteral">"   :val_int, :val_flt, :val_str, :val_date, "</span>)                    MT( <span class="stringliteral">"   :val_lob, :val_file "</span>)                    MT(<span class="stringliteral">") "</span>));    <span class="comment">/* create objects and set values */</span>       <span class="comment">/* date */</span>    date = <a class="code" href="group__g__date.html#ge80eacef54641a68c3b82be85f4a5042" title="Create a local date object.">OCI_DateCreate</a>(cn);    <a class="code" href="group__g__date.html#gd7c5c65d88b52e6ecb46b3e9ba8843dc" title="Return the current system date/time into the date handle.">OCI_DateSysDate</a>(date);    <span class="comment">/* lob */</span>    lob = <a class="code" href="group__g__lob.html#g318f1273603e24b51c3d9e4c29f42685" title="Create a local temporary Lob instance.">OCI_LobCreate</a>(cn, OCI_CLOB);    sprint_dt(temp, SIZE_STR, DT(<span class="stringliteral">"lob value00"</span>));    <a class="code" href="group__g__lob.html#g949f7050609430486c9ef0f3c488d38a" title="Write a buffer into a LOB.">OCI_LobWrite</a>(lob, temp, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) dtslen(temp)+1);    <span class="comment">/* file */</span>    file = <a class="code" href="group__g__file.html#g199d6ce1a1231feb56b456ad6cbc2714" title="Create a file object instance.">OCI_FileCreate</a>(cn, OCI_BFILE);     <a class="code" href="group__g__file.html#ge31e36e786faf43a2663806a28814c68" title="Set the directory and file name of FILE handle.">OCI_FileSetName</a>(file, MT(<span class="stringliteral">"mydir"</span>), MT(<span class="stringliteral">"file00.txt"</span>));    <span class="comment">/* scalar types */</span>    i   = 1;    flt = 3.14;    sprint_dt(temp, 30, DT(<span class="stringliteral">"Name00"</span>));    <span class="comment">/* bind scalar C types arrays */</span>    <a class="code" href="group__g__bind.html#g4d08024d2242b6140fecea8c2ec05c81" title="Bind an integer variable.">OCI_BindInt</a>(st, MT(<span class="stringliteral">":val_int"</span>),  &amp;i);    <a class="code" href="group__g__bind.html#g66c7c882c40d302003b3b239b70c54d3" title="Bind a double variable.">OCI_BindDouble</a>(st, MT(<span class="stringliteral">":val_flt"</span>), &amp;flt);    <a class="code" href="group__g__bind.html#g49988b9ca8f00b55cc3e62ca2385778b" title="Bind a string variable.">OCI_BindString</a>(st, MT(<span class="stringliteral">":val_str"</span>), (dtext*) temp, 30);        <span class="comment">/* bind oracle types arrays */</span>    <a class="code" href="group__g__bind.html#ga0000a7b00b751b88459692f6790e018" title="Bind a date variable.">OCI_BindDate</a>(st, MT(<span class="stringliteral">":val_date"</span>), date);    <a class="code" href="group__g__bind.html#geee7fa2d4a2bae58cd7cdf9348367ef2" title="Bind a Lob variable.">OCI_BindLob</a>(st, MT(<span class="stringliteral">":val_lob"</span>), lob);    <a class="code" href="group__g__bind.html#g92cba59c0aabe28391b5e7053baee708" title="Bind a File variable.">OCI_BindFile</a>(st, MT(<span class="stringliteral">":val_file"</span>), file);     <span class="comment">/* do insert */</span>        <a class="code" href="group__g__exec.html#g7189aa353845909aaedc8d5956429450" title="Execute a prepared SQL statement or PL/SQL block.">OCI_Execute</a>(st);    print_frmt(<span class="stringliteral">"Row inserted : %d\n\n"</span>, <a class="code" href="group__g__exec.html#g1cf932261960da80cd36d650a08565c3" title="Return the number of rows affected by the SQL statement.">OCI_GetAffectedRows</a>(st));        <span class="comment">/* free objets */</span>    <a class="code" href="group__g__date.html#gedf77cfe4bd5dab7909e4c2fb5173b48" title="Free an OCI_Date handle.">OCI_DateFree</a>(date);    <a class="code" href="group__g__lob.html#gac269a3de312c2c7d1a6193a9ab79545" title="Free a local temporary lob.">OCI_LobFree</a>(lob);    <a class="code" href="group__g__file.html#gd4b58b6d80e24bb045fb82d78c5cf36a" title="Free a local File object.">OCI_FileFree</a>(file);    <span class="comment">/* commit; */</span>    <a class="code" href="group__g__transac.html#gee1ba614ed2dc5bd83bf788ca08f3e71" title="Commit current pending changes.">OCI_Commit</a>(cn);}<span class="comment">/* ------------------------------------------------------------------------ *</span><span class="comment"> * test_piecewise_insert</span><span class="comment"> * ------------------------------------------------------------------------ */</span><span class="keywordtype">void</span> test_piecewise_insert(<span class="keywordtype">void</span>){        FILE *f;    print_text(<span class="stringliteral">"\n&gt;&gt;&gt;&gt;&gt; TEST PIECEWISE INSERTING\n\n"</span>);    <span class="comment">/* this code could have been used with a text file in a LONG column</span><span class="comment">       as well...  */</span>    <span class="comment">/* open the app file in for reading*/</span>    f = fopen(EXE_NAME, <span class="stringliteral">"rb"</span>);    <span class="keywordflow">if</span> (f)    {        <span class="keywordtype">int</span> n;        <a class="code" href="struct_o_c_i___long.html" title="Oracle Long datatype.">OCI_Long</a> *lg;        <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> buffer[SIZE_BUF];        fseek (f , 0 , SEEK_END);         n = ftell(f);         rewind (f);            print_frmt(<span class="stringliteral">"\n%d bytes to write\n"</span>, n);        lg = <a class="code" href="group__g__long.html#g040ec19ae09a29b34e0143e39ab30939" title="Create a local temporary Long instance.">OCI_LongCreate</a>(st, OCI_BLONG);        <span class="comment">/* execute query in three steps */</span>               <a class="code" href="group__g__exec.html#gd5a7fcffe7d24da001e44636cfc06578" title="Prepare a SQL statement or PL/SQL block.">OCI_Prepare</a>(st,  MT(<span class="stringliteral">"insert into test_long_raw(code, content) "</span>)                         MT(<span class="stringliteral">"values (1, :data)"</span>));                <a class="code" href="group__g__bind.html#gec1215548d35bff084c1284e303f31f6" title="Bind a Long variable.">OCI_BindLong</a>(st, MT(<span class="stringliteral">":data"</span>), lg, n);        <a class="code" href="group__g__exec.html#g7189aa353845909aaedc8d5956429450" title="Execute a prepared SQL statement or PL/SQL block.">OCI_Execute</a>(st);        <span class="comment">/* write data into table by chunks of 2048 bytes */</span>               <span class="keywordflow">while</span> ((n = (<span class="keywordtype">int</span>) fread(buffer, 1, <span class="keyword">sizeof</span>(buffer), f)))        {            <a class="code" href="group__g__long.html#g1a76c2c5de1c81d38be17bf28524ce99" title="Write a buffer into a Long.">OCI_LongWrite</a>(lg, buffer, n);        }        print_frmt(<span class="stringliteral">"\n%d bytes written\n"</span>, <a class="code" href="group__g__long.html#gf7ed15bc901e38b9bc3394f334bf8d4c" title="Return the buffer size of a long object in bytes (OCI_BLONG) or character (OCI_CLONG)...">OCI_LongGetSize</a>(lg));        fclose(f);        <a class="code" href="group__g__long.html#gdc23551bd5aa7832cbaee4e32a2b283a" title="Free a local temporary long.">OCI_LongFree</a>(lg);        <a class="code" href="group__g__transac.html#gee1ba614ed2dc5bd83bf788ca08f3e71" title="Commit current pending changes.">OCI_Commit</a>(cn);    }}<span class="comment">/* ------------------------------------------------------------------------ *</span><span class="comment"> * test_piecewise_fetch</span><span class="comment"> * ------------------------------------------------------------------------ */</span><span class="keywordtype">void</span> test_piecewise_fetch(<span class="keywordtype">void</span>){        <a class="code" href="struct_o_c_i___long.html" title="Oracle Long datatype.">OCI_Long</a> *lg;    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> buffer[SIZE_BUF];    <span class="keywordtype">int</span> n;    print_text(<span class="stringliteral">"\n&gt;&gt;&gt;&gt;&gt; TEST PIECEWISE FETCHING\n\n"</span>);    <span class="comment">/* execute query in one go */</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, MT(<span class="stringliteral">"select content from test_long_raw "</span>)                              MT(<span class="stringliteral">"where code = 1"</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="comment">/* read data by chunks of 2048 bytes*/</span>           <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))    {        lg = <a class="code" href="group__g__fetch.html#g8c750dc1ea6d90c61cc2ebff5fb0c561" title="Return the current Long value of the column at the given index in the resultset.">OCI_GetLong</a>(rs, 1);        <span class="keywordflow">while</span> ((n = <a class="code" href="group__g__long.html#gd7e0ba53269cc2d5aace557a984c8717" title="Read a portion of a long into the given buffer [Obsolete].">OCI_LongRead</a>(lg, buffer, <span class="keyword">sizeof</span>(buffer)))) {}        print_frmt(<span class="stringliteral">"\n%d bytes read\n"</span>, <a class="code" href="group__g__long.html#gf7ed15bc901e38b9bc3394f334bf8d4c" title="Return the buffer size of a long object in bytes (OCI_BLONG) or character (OCI_CLONG)...">OCI_LongGetSize</a>(lg));    }        print_frmt(<span class="stringliteral">"\n%d row(s) fetched\n"</span>, <a class="code" href="group__g__fetch.html#g93bd9197720088dbda2bef593ad1c07c" title="Retrieve the number of rows fetched so far.">OCI_GetRowCount</a>(rs));    print_text(<span class="stringliteral">"\n&gt;&gt;&gt;&gt;&gt; TEST LONG MAPPED TO STRING\n\n"</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, MT(<span class="stringliteral">"select content from test_long_str "</span>)                        MT(<span class="stringliteral">"where code = 1"</span>));    <a class="code" href="group__g__stmt.html#ge92422b723eef25355d91e0b50c09c0c" title="Set the long datatype handling mode of a SQL statement.">OCI_SetLongMode</a>(st, OCI_LONG_IMPLICIT);    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))    {        <span class="keyword">const</span> dtext *long_str = <a class="code" href="group__g__f

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -