ex13_8c-example.html

来自「一个很好用的Linux/Unix下Oracle OCI开发接口封装库」· HTML 代码 · 共 110 行

HTML
110
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Example Documentation</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; <a class="qindex" href="examples.html">Examples</a> &nbsp; </center>
<hr><h1>ex13.c</h1> Example for inserting data into a blob column from an internal buffer.
<p>
<div class="fragment"><pre><span class="comment">/* $Id: ex13_8c-example.html,v 1.1 2005/01/13 02:56:43 cvsroot Exp $ */</span>
<span class="preprocessor">#include &lt;stdio.h&gt;</span>
<span class="preprocessor">#include &lt;stdlib.h&gt;</span>
<span class="preprocessor">#include "examples.h"</span>


<span class="keywordtype">int</span> insert_into_blob_table(<a class="code" href="group__typedefs.html#a0">sqlo_db_handle_t</a> dbh, <span class="keywordtype">int</span> key )
{
  <span class="keywordtype">char</span> * stmt = 
    <span class="stringliteral">"INSERT INTO T_SQLORA_BLOB (KEY, CDATA) "</span>
    <span class="stringliteral">"VALUES (:b1, EMPTY_CLOB()) RETURNING CDATA INTO :b2"</span>;

  <span class="keywordtype">char</span> data[MAX_BLOB_BUFFER_DATA];        <span class="comment">/* a data buffer */</span>
  <a class="code" href="group__typedefs.html#a2">sqlo_lob_desc_t</a> loblp;                  <span class="comment">/* the lob locator */</span>
  <a class="code" href="group__typedefs.html#a1">sqlo_stmt_handle_t</a> sth;
  <span class="keywordtype">int</span> status;
  <span class="keywordtype">int</span> k = key;


  <span class="comment">/* create the test table */</span>
  create_blob_table(dbh);

  <span class="comment">/* fill the data buffer with some characters */</span>
  fillbuf(data, MAX_BLOB_BUFFER_DATA);

  <span class="comment">/* parse the statement */</span>

  <span class="keywordflow">if</span> (0&gt;(sth = <a name="a0"></a><a class="code" href="group__complex.html#a0">sqlo_prepare</a>(dbh, stmt)))
    error_exit(dbh, <span class="stringliteral">"sqlo_prepare"</span>);

  <span class="comment">/* alloate the lob descriptor */</span>
  <span class="keywordflow">if</span> (0 &gt; <a name="a1"></a><a class="code" href="group__lob.html#a0">sqlo_alloc_lob_desc</a>(dbh, &amp;loblp))
    error_exit(dbh, <span class="stringliteral">"sqlo_alloc_lob_desc"</span>);

  <span class="comment">/* bind input variables. Note: we bind the lob descriptor here */</span>
  <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#a3a25">SQLO_SUCCESS</a> != 
      (<a name="a2"></a><a class="code" href="group__complex.html#a3">sqlo_bind_by_pos</a>(sth, 1, <a class="code" href="group__constants.html#a6a56">SQLOT_INT</a>, &amp;k, <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>), NULL, 0)) ||
      (<a class="code" href="group__complex.html#a3">sqlo_bind_by_pos</a>(sth, 2, <a class="code" href="group__constants.html#a6a81">SQLOT_CLOB</a>, &amp;loblp, 0, NULL, 0))
      ) {
    <a name="a3"></a><a class="code" href="group__lob.html#a1">sqlo_free_lob_desc</a>(dbh, &amp;loblp);
    error_exit(dbh, <span class="stringliteral">"sqlo_bind_by_pos"</span>);
  }

  <span class="comment">/* execute the statement */</span>
  status = <a name="a4"></a><a class="code" href="group__complex.html#a8">sqlo_execute</a>(sth, 1);

  <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#a3a25">SQLO_SUCCESS</a> != status) {
    <a class="code" href="group__lob.html#a1">sqlo_free_lob_desc</a>(dbh, &amp;loblp);
    error_exit(dbh, <span class="stringliteral">"sqlo_execute"</span>);
  }

  <span class="comment">/* write the lob */</span>
  status = <a name="a5"></a><a class="code" href="group__lob.html#a2">sqlo_lob_write_buffer</a>(dbh, loblp, MAX_BLOB_BUFFER_DATA, data, 
                                 MAX_BLOB_BUFFER_DATA, <a class="code" href="group__constants.html#a5a50">SQLO_ONE_PIECE</a>);

  <span class="keywordflow">if</span> (status &lt; 0) {
    <a class="code" href="group__lob.html#a1">sqlo_free_lob_desc</a>(dbh, &amp;loblp);
    error_exit(dbh, <span class="stringliteral">"sqlo_log_write_buffer"</span>);
  }

  <a class="code" href="group__lob.html#a1">sqlo_free_lob_desc</a>(dbh, &amp;loblp);
  <a name="a6"></a><a class="code" href="group__easy.html#a13">sqlo_close</a>(sth);
  
  <span class="keywordflow">return</span> (1);
}

<span class="keywordtype">void</span> create_blob_table(<a class="code" href="group__typedefs.html#a0">sqlo_db_handle_t</a> dbh)
{
  <span class="keywordtype">char</span> * stmt=
    <span class="stringliteral">"CREATE TABLE T_SQLORA_BLOB (KEY INTEGER, CDATA CLOB, BDATA BLOB)"</span>;

  <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#a3a25">SQLO_SUCCESS</a> != <a name="a7"></a><a class="code" href="group__easy.html#a14">sqlo_exec</a>(dbh, stmt))
    <span class="keywordflow">if</span> (<a name="a8"></a><a class="code" href="group__error.html#a1">sqlo_geterrcode</a>(dbh) != 955) <span class="comment">/* table exists already */</span>
      error_exit(dbh, <span class="stringliteral">"sqlo_exec"</span>);
}

<span class="keywordtype">void</span> drop_blob_table(<a class="code" href="group__typedefs.html#a0">sqlo_db_handle_t</a> dbh)
{
  <span class="keywordtype">char</span> * stmt = <span class="stringliteral">"DROP TABLE T_SQLORA_BLOB"</span>;

  <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#a3a25">SQLO_SUCCESS</a> != <a class="code" href="group__easy.html#a14">sqlo_exec</a>(dbh, stmt))
    error_exit(dbh, <span class="stringliteral">"sqlo_exec"</span>);
}

<span class="keywordtype">void</span> fillbuf(<span class="keywordtype">char</span> * data, <span class="keywordtype">int</span> len)
{
  <span class="keywordtype">int</span> i;
  <span class="keywordflow">for</span> (i = 0; i &lt; len; ++i) {
    data[i] = <span class="charliteral">'A'</span> + i % 26;
  }
}

<span class="comment">/* $Id */</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Aug 14 18:02:53 2003 for libsqlora8 by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>

⌨️ 快捷键说明

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