`
kevin.wang
  • 浏览: 249247 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Pro * C 的使用(三)

阅读更多
   (7) 动态定义语句
  SQL语句分动态定义语句和静态定义语句两种:
  (1) 静态定义语句:SQL语句事先编入PRO*C中,在经过预编译器编译之后形成目标程序*。BOJ,然后执行目标程序预即可。
  (2) 动态定义语句:有些语句不能事先嵌入到PRO*C程序中,要根据程序运行情况,用户自己从输入设备上(如终端上)实时输入即将执行的SQL语句。
  动态定义语句有:
    l EXECUTE IMMEDIATE;
  l PREPARE 与EXECUTE;
  l PREPARE与FETCH 和 OPEN ;
  l BIND与DEFINE DESCRIPTOR。
  
  1. EXECUTE IMMEDIATE语句
  此语句表示立即执行, 并且只向SQLCA返回执行结果,无其它信息。例如:
  EXEC SQL BEGIN DECLARE SECTION;
  VARCHAR abcd[89];
  VARCHAR deay[20];
  EXEC SQL END DECLARE SECTION;
  /**  输出字符串到abcd **/
  EXEC SQL EXECUTE IMMEDIATE :abcd;
  注意:
  1) EXECUTE IMMEDIATE只能运行带一个参数的动态语句。其中,abcd是参数,不是关键字。
  2) EXECUTE IMMEDIATE使用的先决条件是:SQL语句不能包含主变量;SQL语句不能是查询语句。
  3) 可用任何主变量作为EXECUTE IMMEDIATE的参数;也可用字符串作为主变量。
  
  2. PREPARE与EXECUTE语句
  此语句表示“预编译/执行”。此语句能够预编译一次而执行多次。语法为:
  EXEC SQL PREPARE 〈语句名〉FROM:主变量;
  EXEC SQL EXECUTE〈语句名〉[USING:替换主变量];
  PREPARE语句做两件事:
  (1) 预编译SQL语句;
  (2) 给出SQL语句的语句名。
  注意:
  l SQL语句不能是查询语句;
  l PREPARE和EXECUTE可包含主变量;
  l PREPARE不能多次执行。
  例如:
  #define USERNAME “SCOTT”
  #define PASSWORD “TIGER”
  #include
  EXEC SQL INCLUDE sqlca;
  EXEC SQL BEGIN DECLARE SECTION;
   Char * username=USERNAME;
   Char * password=PASSWORD;
   VARCHAR sqlstmt[80];
   Int emp_number;
   VARCHAR emp_name[15];
   VARCHAR job[50];
  EXEC SQL END DECLARE SECTION;
  Main()
  {
  EXEC SQL WHENEVER SQLERROR GOTO :sqlerror;
  EXEC SQL CONNECT :username IDENTIFIED BY :password;
  Sqlstmt.len=sprintf(sqlstmt.arr,”INSERT INTO EMP (EMPNO,ENAME,JOB,SAL)
   VALUES(:V1,:V2,:V3,:V4)”);
  Puts(sqlstmt.arr);
  EXEC SQL PREPARE S FROM :sqlstmt;
  For(;;)
  {
    printf(“\nenter employee number:”);
    scanf(“%d”,&emp_number);
    if (emp_number==0) break;
    printf(“\nenter employee name:”);
    scanf(“%s”,&emp_name.arr);
    emp_name.len=strlen(emp_name.arr);
    printf(“\nenter employee job:”);
    scanf(“%s”,job.arr);
    job.len=strlen(job.arr);
    printf(“\nenter employee salary:”);
    scanf(“%f”,&salary);
   }
  EXEC SQL EXECUTE S USING :emp_number,:emp_name,:job,:salary;
  }
  
  
  3. FETCH语句和OPEN语句
  FETCH语句和OPEN语句这组动态语句是对游标进行操作的,其执行过程如下:
   
  注意:
  l SQL语句允许使用查询语句;
  l SELECT子句中的列名不能动态改变,只能预置;
  l WHERE和ORDER BY 子句可以动态改变条件。
  
  一、 Pro*C的编译和运行
  
  1. 先用ORACLE预编译器PROC对PRO*C程序进行预处理,该编译器将源程序中嵌入的SQL语言翻译成C语言,产生一个C语言编译器能直接编译的文件。生成文件的扩展名为 .C
  2. 用C语言编译器CC 对扩展名为 .c的文件编译,产生目标码文件,其扩展名为 .o
  3. 使用MAKE命令,连接目标码文件,生成可运行文件
  例如: 对上面的example.pc进行编译运行
     PROC iname=example.pc
     CC example.c
     MAKE EXE=example OBJS=”example.o”
     example
分享到:
评论

相关推荐

    Oracle Pro*C 编程入门.pdf

    1. Pro*C简介:Pro*C是一种将SQL语句嵌入C程序中的开发工具,它允许开发者在C语言中直接使用SQL语句访问Oracle数据库。它是一种第三代语言嵌入式SQL工具,可以在Oracle数据库管理系统中使用。Pro*C程序可以执行...

    精通PRO*c编程

    《精通PRO*C编程》这本书是针对Oracle数据库应用开发的一本专业指南,主要讲解如何使用PRO*C,Oracle提供的C语言预处理器,进行高效的数据库应用程序开发。PRO*C是Oracle Corporation为C程序员设计的一种工具,它...

    Pro*C

    **Pro*C**是一种由Oracle提供的C语言扩展,它允许开发者在C程序中直接嵌入SQL语句,并通过Oracle预编译器将其转换成标准C代码,从而实现数据库操作与业务逻辑的无缝集成。 #### 二、新特性介绍 - **ORACLE 9i ...

    PRO*C的批量读取

    PRO*C(也称为预编译C)是一种允许在C程序中嵌入SQL语句的技术,它结合了C语言的强大功能与Oracle数据库的高效数据处理能力。本文主要探讨如何使用PRO*C进行高效的大规模数据导出。 #### 二、问题概述 假设有一个...

    pro*c 的 资料

    Pro*C 属于第三种方法,结合了过程化和非过程化语言的优点。 2. **Pro*C 程序结构** - **程序结构**:Pro*C 程序类似于 C 程序,由全局和局部变量、函数组成,但增加了 SQL 语句和 PL/SQL 块。其结构主要包括应用...

    Pro*C/C++ Programmer’s Guide, 10g Release 2 (10.2)

    Pro*C/C++ Programmer’s Guide, 10g Release 2 (10.2)提供了详细的指导和示例,帮助开发者有效地使用C/C++与Oracle数据库进行交互。通过深入理解其提供的特性和最佳实践,可以显著提高应用程序的性能和稳定性。对于...

    浅析Oracle数据库中Pro*C程序.pdf

    为了方便开发者使用C语言进行数据库操作,Oracle提供了Pro*C工具,它是一种预编译器,允许程序员将C语言与SQL语句无缝结合,创建高效的数据库应用程序。 1. Pro*C程序概述 Pro*C程序结合了C语言的过程化编程能力与...

    Pro * c的动态SQL方法在仿真系统中的应用.pdf

    Pro*C是一种基于C语言的嵌入式SQL语言,能够将SQL语句嵌入到C语言程序中,从而实现数据库操作。Pro*C的动态SQL方法是指在Pro*C程序中使用动态定义的SQL语句来实现数据库操作。这种方法可以根据不同的数据库和应用...

    Pro*COBOL Precompiler Programmer’s Guide Release 9.2

    接着,使用 Pro*COBOL Precompiler 将 COBOL 代码转换为 C 代码,最后使用 C 编译器编译生成可执行文件。 三、Pro*COBOL Precompiler 的编程技巧 在使用 Pro*COBOL Precompiler 进行编程时,需要注意以下几点: *...

    OraclePro*c编程(内部培训资料)

    如果你的应用程序不需要与 Oracle 数据库交互,或者可以完全使用标准 C 库函数完成所有功能时,就没有必要使用 Pro*c/C++ 和 SQLLIB 库函数。 ##### 3.6.4 能在 Pro*c/C++ 程序中调用存储过程吗? 可以。在 Pro*c/...

    数据库连接源码pro*c程序

    使用Pro*C进行编程一般分为以下三个步骤: 1. **创建内嵌SQL的C源程序**:首先需要创建一个后缀名为`.pc`的文件,在这个文件中可以嵌入SQL语句。例如,`stu.pc`文件就是一个典型的示例。 2. **预编译**:使用Pro*C...

    Oracle 11g Pro C/C++编程艺术

    在Oracle 11g中,Pro*C/C++是一种用于开发高性能应用程序的语言环境,它允许开发者使用C或C++语言编写应用程序,并通过Oracle预编译器将SQL语句嵌入到这些应用程序中。 #### 二、Oracle Pro*C/C++编程基础 **2.1 ...

    一个PRO*C 与Oracle连接的实例

    本文将详细介绍如何使用 PRO*C(一种 C 语言的扩展,允许开发者在 C 语言程序中直接嵌入 SQL 语句)来连接 Oracle 数据库,并通过一个具体的示例程序来演示整个过程。这个示例包括了环境配置、代码编写、编译以及...

    ProCC++程序设计

    在Pro*C中,可以通过相应的C语言类型映射来使用它。 3. **何时不使用Pro*C/C++和SQLLIB库函数**:当需要更高的性能或更复杂的逻辑时,可能会选择使用OCI或其他更高级的接口。 4. **能否在Pro*C/C++程序中调用...

    Pro C的使用,编程技巧

    - 内嵌 SQL 或 ORACLE 库函数的第三代语言:Pro*C 正属于这种方法,它在 C 语言中嵌入 SQL,实现了过程化和非过程化的融合。 2. Pro*C 程序结构: Pro*C 程序的结构类似于标准 C 程序,但包含 SQL 语句和 PL/SQL ...

    Oracle Pro C

    #### 三、Oracle Pro*C/C++的主要组成部分 1. **预编译器**:用于解析包含SQL语句的源代码,并将其转换为标准的C/C++代码。 2. **运行时库**:包含了与Oracle数据库交互所需的动态链接库(DLL)。 3. **头文件和库...

    Oracle DBA培训教材3

    3. **使用Pro*C的优势** - **灵活性**:Pro*C提供了C语言的编程灵活性,允许进行复杂的数据处理和逻辑控制。 - **效率**:通过预编译,SQL语句被转换为更高效的C代码,直接与Oracle数据库接口交互,提高执行速度。...

    ProC/C++学习

    Pro*C/C++的处理流程主要包括三个步骤:预编译、编译和执行。首先,Pro*C/C++会将C/C++代码中的SQL语句提取出来,生成相应的SQL语句;然后,这些SQL语句将被编译成可执行的代码;最后,编译后的代码将被执行,实现了...

Global site tag (gtag.js) - Google Analytics