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

📄 esql-c资料(完全版)三_unix_操作系统_网络学院_天新网.htm

📁 一个sql语句用法的完全手册
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<TABLE cellSpacing=0 cellPadding=0 width=760 align=center border=0>
  <TBODY>
  <TR>
    <TD class=mainbgcolor width=6></TD>
    <TD 
    style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid" 
    vAlign=center bgColor=#666666 height=25>&nbsp; <A 
      href="http://school.21tx.com/os/win9x/"><FONT 
      color=#ffffff>Windows9x</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/win2000/"><FONT 
      color=#ffffff>Win2000</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/winxp/"><FONT 
      color=#ffffff>WindowsXP</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/win2003/"><FONT 
      color=#ffffff>Windows2003</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/longhorn/"><FONT 
      color=#ffffff>Vista</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/dos/"><FONT 
      color=#ffffff>Dos</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/app/"><FONT 
      color=#ffffff>Windows</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/linux/"><FONT 
      color=#ffffff>Linux</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/unix/"><FONT 
      color=#ffcc00>Unix</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/freebsd/"><FONT 
      color=#ffffff>FreeBSD</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/solaris/"><FONT 
      color=#ffffff>Solaris</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/macos/"><FONT 
      color=#ffffff>MaxOS</FONT></A><FONT color=#ffffff> | </FONT><A 
      href="http://school.21tx.com/os/aix/"><FONT 
      color=#ffffff>AIX</FONT></A><FONT color=#ffffff> | </FONT></TD>
    <TD class=mainbgcolor width=6></TD></TR></TBODY></TABLE></SPAN>
<TABLE cellSpacing=0 cellPadding=0 width=760 align=center border=0>
  <TBODY>
  <TR>
    <TD class=mainbgcolor width=6></TD>
    <TD style="BORDER-LEFT: #cccccc 1px solid" vAlign=top align=middle 
    bgColor=#ffffff>
      <TABLE cellSpacing=0 cellPadding=0 width="100%">
        <TBODY>
        <TR>
          <TD colSpan=2 height=3></TD></TR>
        <TR>
          <TD width="2%"><IMG height=22 
            src="ESQL-C资料(完全版)三_Unix_操作系统_网络学院_天新网.files/dline.gif" width=19></TD>
          <TD width="98%" 
          background=ESQL-C资料(完全版)三_Unix_操作系统_网络学院_天新网.files/dline02.htm>&nbsp; 
            您现在的位置:<A href="http://www.21tx.com/">天新网</A> &gt; <A 
            href="http://school.21tx.com/">网络学院</A> &gt; <A 
            href="http://school.21tx.com/os/">操作系统</A> &gt; <A 
            href="http://school.21tx.com/os/unix/">Unix</A> </TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=6 width="98%" 
      background=ESQL-C资料(完全版)三_Unix_操作系统_网络学院_天新网.files/data_title_bg.gif 
      border=0>
        <TBODY>
        <TR>
          <TD align=middle><FONT class=f18 
            color=#339900><B>ESQL/C资料(完全版)三</B></FONT></TD></TR>
        <TR>
          <TD align=middle>http://school.21tx.com 2005年03月13日 <FONT 
            color=#a20010></FONT></TD></TR></TBODY></TABLE>
      <P align=center><SPAN id=txsite_ad_cnt_top1></SPAN><SPAN 
      id=txsite_ad_cnt_top2>
      <TABLE cellSpacing=0 cellPadding=0 width=468 align=center border=0>
        <TBODY>
        <TR>
          <TD height=6></TD></TR>
        <TR>
          <TD 
          style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid" 
          align=middle width=468>
            <SCRIPT type=text/javascript>
var arrBaiduCproConfig=new Array();
arrBaiduCproConfig['uid'] = 111945;
arrBaiduCproConfig['n'] = 'txadcpr';
arrBaiduCproConfig['tm'] = 30;
arrBaiduCproConfig['cm'] = 68;
arrBaiduCproConfig['um'] = 34;
arrBaiduCproConfig['rad'] = 1;
arrBaiduCproConfig['w'] = 468;
arrBaiduCproConfig['h'] = 60;
arrBaiduCproConfig['bd'] = '#ffffff';
arrBaiduCproConfig['bg'] = '#ffffff';
arrBaiduCproConfig['tt'] = '#0000ff';
arrBaiduCproConfig['ct'] = '#000000';
arrBaiduCproConfig['url'] = '#666666';
arrBaiduCproConfig['bdl'] = '#ffffff';
arrBaiduCproConfig['wn'] = 2;
arrBaiduCproConfig['hn'] = 1;
arrBaiduCproConfig['ta'] = 'right';
arrBaiduCproConfig['tl'] = 'bottom';
arrBaiduCproConfig['bu'] = 0;
</SCRIPT>

            <SCRIPT src="ESQL-C资料(完全版)三_Unix_操作系统_网络学院_天新网.files/ui.js" 
            type=text/javascript>
</SCRIPT>

            <SCRIPT type=text/javascript>
<!--
document.write(baiduCproIFrame());
-->
</SCRIPT>
          </TD></TR>
        <TR>
          <TD height=6></TD></TR></TBODY></TABLE></SPAN><SPAN 
      id=txsite_ad_cnt_top3></SPAN></P>
      <TABLE id=txsite_content cellSpacing=0 cellPadding=0 width="98%" 
        border=0><TBODY>
        <TR>
          <TD class=content><SPAN id=txsite_ad_cnt_start></SPAN>
            <P class=line-height><BR>第四节 ORACLE数据库的嵌入SQL语言<BR>4.1 
            基本的SQL语句<BR>4.1.1宿主变量和指示符<BR>1)、声明方法<BR>同其他数据库管理器一样,ORACLE使用宿主变量传递数据库中的数据和状态信息到应用程序,应用程序也通过宿主变量传递数据到ORACLE数据库。根据上面两种功能,宿主变量分为输出宿主变量和输入宿主变量。在SELECT 
            INTO和FETCH语句之后的宿主变量称作“输出宿主变量”,这是因为从数据库传递列数据到应用程序。除了SELECT 
            INTO和FETCH语句外的其他SQL语句中的宿主变量,称为“输入宿主变量”。这是因为从应用程序向数据库输入值。如:INSERT、UPDATE等语句。请看下面这个例子:<BR>int 
            emp_number; <BR>char temp[20];<BR>VARCHAR emp_name[20]; <BR>/* get 
            values for input host variables */ <BR>printf("Employee number? "); 
            <BR>gets(temp);<BR>emp_number = atoi(temp);<BR>printf("Employee 
            name? "); <BR>gets(emp_name.arr); <BR>emp_name.len = 
            strlen(emp_name.arr); <BR>EXEC SQL INSERT INTO EMP (EMPNO, ENAME) 
            <BR>VALUES (:emp_number, :emp_name); 
            <BR>在上面这个例子中,其中的emp_number和emp_name就是宿主变量。值得注意的是,它同其他数据库的区别是,定义宿主变量可以不需要BEGIN 
            DECLARE SECTION和END DECLARE SECTION。<BR>2)、指示符变量<BR>大多数程序<A 
            href="http://school.21tx.com/photo/" 
            target=_blank>设计</A>语言(如C)都不支持NULL。所以对NULL的处理,一定要在SQL中完成。我们可以使用主机指示符变量来解决这个问题。在嵌入式SQL语句中,主变量和指示符变量共同规定一个单独的SQL类型值。指示符变量是一个2字节的整数。<BR>针对输入宿主变量和输出宿主变量,指示变量共有下面几种情况:<BR>同输入宿主变量一起使用时:<BR>-1 
            Oracle将null赋值给列,即宿主变量应该假设为NULL。 <BR>&gt;=0 
            Oracle将宿主变量的实际值赋值给列。<BR>同输出宿主变量一起使用时:<BR>-1 表示该列的输出值为NULL。 <BR>0 
            Oracle已经将列的值赋给了宿主变量。列值未做截断。 <BR>&gt;0 
            Oracle将列的值截断,并赋给了宿主变量。指示变量中存放了这个列的实际长度。 <BR>-2 
            Oracle将列的值截断,并赋给了宿主变量。但是这个列的实际长度不能确定。 
            <BR>从数据库中查询数据时,可以使用指示符变量来测试NULL:<BR>EXEC SQL SELECT ename, sal 
            <BR>INTO :emp_name, :salary <BR>FROM emp <BR>WHERE :commission 
            INDICATOR :ind_comm IS NULL ... 
            <BR>注意,不能使用关系操作符来比较NULL,这是因为NULL和任何操作都为false。如:<BR>EXEC SQL SELECT 
            ename, sal <BR>INTO :emp_name, :salary <BR>FROM emp <BR>WHERE comm = 
            :commission<BR>如果comm列的某些行存在NULL,则该SELECT语句不能返回正确的结果。应该使用下面这个语句完成:<BR>EXEC 
            SQL SELECT ename, sal <BR>INTO :emp_name, :salary <BR>FROM emp 
            <BR>WHERE (comm = :commission) OR ((comm IS NULL) AND 
            <BR>(:commission INDICATOR :ind_comm IS NULL));<BR>4.1.2 
            查询<BR>如果是单行查询,则应该使用SELECT 
            INTO语句。如果是多行查询,应该使用游标或宿主变量数组。如:单行查询的一个例子:<BR>EXEC SQL SELECT ename, 
            job, sal + 2000 <BR>INTO :emp_name, :job_title, :salary <BR>FROM emp 
            <BR>WHERE empno = :emp_number; <BR>在嵌入SQL语句中,也可以使用子查询。如:<BR>EXEC SQL 
            INSERT INTO emp2 (empno, ename, sal, deptno) <BR>SELECT empno, 
            ename, sal, deptno FROM emp <BR>WHERE job = :job_title; <BR>4.1.3 
            修改数据<BR>1)、插入数据<BR>使用INSERT语句插入数据。其语法同ANSI SQL语法类似。如:<BR>EXEC SQL 
            INSERT INTO emp (empno, ename, sal, deptno) <BR>VALUES (:emp_number, 
            :emp_name, :salary, :dept_number); 
            <BR>2)、更新数据<BR>使用UPDATE语句更新数据。其语法同ANSI SQL语法类似。如:<BR>EXEC SQL UPDATE 
            emp <BR>SET sal = :salary, comm = :commission <BR>WHERE empno = 
            :emp_number; <BR>3)、删除数据<BR>使用DELETE语句删除数据。其语法同ANSI 
            SQL语法类似。如:<BR>EXEC SQL DELETE FROM emp <BR>WHERE deptno = 
            :dept_number; <BR>4.1.4 
            游标<BR>用嵌入式SQL语句查询数据分成两类情况。一类是单行结果,一类是多行结果。对于单行结果,可以使用SELECT 
            INTO语句;对于多行结果,你必须使用游标来完成。游标是一个与SELECT语句相关联的符号名,它使用户可逐行访问由ORACLE返回的结果集。使用游标,应该包含以下四个步骤。<BR>1)、定义游标<BR>使用DECLARE语句完成。如:<BR>EXEC 
            SQL DECLARE emp_cursor CURSOR FOR <BR>SELECT ename FROM emp WHERE 
            deptno = 
            :dept_number;<BR>值得注意的是,不能在同一个文件中定义两个相同名字的游标。游标的作用范围是全局的。<BR>2)、打开游标<BR>使用OPEN语句完成。如:<BR>EXEC 
            SQL OPEN emp_cursor; <BR>3)、取一行值<BR>使用FETCH语句完成。如:<BR>EXEC SQL FETCH 
            emp_cursor INTO 
            :emp_name;<BR>4)、关闭游标<BR>使用CLOSE语句完成。它完成的功能是:释放资源,如占用内存,锁等。如:EXEC 
            SQL CLOSE emp_cursor; <BR>5)、使用游标修改数据<BR>我们可以使用CURRENT 
            OF子句来完成修改数据。如:<BR>EXEC SQL DECLARE emp_cursor CURSOR FOR <BR>SELECT 
            ename, sal FROM emp WHERE job = 'CLERK' <BR>FOR UPDATE OF sal; 
            <BR>... <BR>EXEC SQL OPEN emp_cursor; <BR>EXEC SQL WHENEVER NOT 
            FOUND GOTO ... <BR>for (;;) {<BR>EXEC SQL FETCH emp_cursor INTO 
            :emp_name, :salary; <BR>... <BR>EXEC SQL UPDATE emp SET sal = 
            :new_salary <BR>WHERE CURRENT OF emp_cursor; <BR>} 
            <BR>值得注意的是,在使用CURRENT 
            OF子句来完成修改数据时,在OPEN时会对数据加上排它锁。这个锁直到有COMMIT或ROLLBACK语句时才释放。<BR>以下是使用游标修改数据的一个完整例子:<BR>...<BR>/* 
            定义游标 */ <BR>EXEC SQL DECLARE emp_cursor CURSOR FOR <BR>SELECT ename, 
            job <BR>FROM emp <BR>WHERE empno = :emp_number <BR>FOR UPDATE OF 
            job; <BR>/* 打开游标 */ <BR>EXEC SQL OPEN emp_cursor; <BR>/* break if 
            the last row was already fetched */ <BR>EXEC SQL WHENEVER NOT FOUND 
            DO break; <BR>/* 循环取值*/ <BR>for (;;) <BR>{ <BR>EXEC SQL FETCH 
            emp_cursor INTO :emp_name, :job_title; <BR>/* 更新当前游标所在的行的数据*/ 
            <BR>EXEC SQL UPDATE emp <BR>SET job = :new_job_title <BR>WHERE 
            CURRENT OF emp_cursor; <BR>} <BR>... <BR>/* 关闭游标 */ <BR>EXEC SQL 
            CLOSE emp_cursor; <BR>EXEC SQL COMMIT WORK RELEASE; <BR>... 
            <P>下面这个例子完整演示了静态游标的使用方法。这个例子的作用是,获得部门编号,通过游标来显示这个部门中的所有雇员信息。 
            <P>#include &lt;stdio.h&gt; <BR>/* 声明宿主变量 */ <BR>char userid[12] = 
            "SCOTT/TIGER";<BR>char emp_name[10];<BR>int emp_number;<BR>int 
            dept_number; <BR>char temp[32];<BR>void sql_error();<BR>/*包含SQLCA */ 

⌨️ 快捷键说明

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