📄 group__g__demo.html
字号:
<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>>>>> 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>), &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>), &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>>>>> 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>>>>> 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>>>>> 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 + -