`
m635674608
  • 浏览: 5029315 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

pro*c 动态sql三

 
阅读更多
  1. 这种方法可以执行包括查询语句在内的动态SQL语句, 但它要求在预编译时刻动态SQL语句内选择列表项数,输入宿主变量占位符数据以及输入宿主变量的数据类型必须确定。 方法三以游标方式执行动态SQL语句, 它对SQL语句的处理过程为:   
  2. ①. 准执行PREPARE命令准备SQL语句;   
  3. #实际就是把要执行的动态语句调入内存, 以   
  4. 便以后对它进行操作。   
  5. ②. 执行DECLARE命令声明游标;   
  6. ③. 执行OPEN打开游标;   
  7. ④. 调用FETCH语句提取游标;   
  8. ⑤. 调用CLOSE语句关闭游标。   
  9. 动态SQL语句中的数据库对象名称和列名可以在运行时刻指定, 便此时不能以宿主变量形式指定对象名称或列名.   
  10. 其实就是多了一个游标的使用。   
  11. 如下面程序:   
  12. <连接数据库>;   
  13. strcpy(sql_stmt, "SELECT name, address, sex FROM test001");   
  14. EXEC SQL PREPARE select_stmt FROM :sql_stmt;   
  15. EXEC SQL DECLARE c1 CURSOR FOR select_stmt;   
  16. EXEC SQL OPEN c1;   
  17. EXEC SQL WHENEVER NOT FOUND DO BREAK;   
  18. while(1)   
  19. Oracle Pro*C 编程入门   
  20. {   
  21. EXEC SQL FETCH c1 INTO :Name, :address, :sex;   
  22. printf("The name is: %s, The Address is: %s, The sex is :%s\n", Name, address,   
  23. sex);   
  24. }   
  25. EXEC SQL CLOSE c1;   
  26. #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <sqlca.h>
    void connect();
    void sql_err();
    
    void dynamic_sqlthree();
    
    void main()
    {
       EXEC SQL WHENEVER SQLERROR  DO sql_err();
       connect();
       dynamic_sqlthree();
       EXEC SQL COMMIT RELEASE;
    }
    
    void sql_err()
    {
      //printf("%.*s\n",sqlca.sqlerrm.sqlerrml,,sqlca.sqlerrm.sqlerrmc);
    }
    
    
    void connect()/*数据库连接-本地数据库,不添加server*/
    {
      EXEC SQL BEGIN DECLARE SECTION;
      VARCHAR oraCN[30];
      EXEC SQL END DECLARE SECTION;
      strcpy(oraCN.arr,"scott/Tiger@TEST_dist");
      EXEC SQL CONNECT :oraCN;
    }
    
     
    
    void dynamic_sqlthree()
    {
        EXEC SQL BEGIN DECLARE SECTION;
        char name[10];
        int  salary;
        int  dno;
        EXEC SQL END DECLARE SECTION;
        printf("input deptno u want to view: ");
        scanf("%d",&dno);
        getchar();
        EXEC SQL PREPARE stat FROM 'SELECT sal,ename from emp  WHERE deptno=:a';
        EXEC SQL DECLARE emp_cursor CURSOR FOR stat;
        EXEC SQL OPEN emp_cursor USING :dno;
        EXEC SQL WHENEVER NOT FOUND DO break;
        for(;;)
        {
           EXEC SQL FETCH emp_cursor INTO :salary,:name;
           printf("name: %s,salary: %d\n",name,salary);
        }
        EXEC SQL CLOSE emp_cursor;
    
    }
    
    
     
分享到:
评论

相关推荐

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

    三、Pro*C的动态SQL方法在仿真系统中的应用 在仿真系统中,Pro*C的动态SQL方法可以解决数据处理和存储问题。通过使用Pro*C的动态SQL方法,可以实现对不同数据库的操作,例如数据采集、数据处理、数据分析、数据存储...

    Pro*c编程电子图书

    1. **高级Pro*C特性**:深入讲解Pro*C的高级特性,如动态SQL、批处理、并发控制等。 2. **性能优化**:介绍如何通过Pro*C优化数据库访问,包括索引策略、查询优化和内存管理。 3. **分布式处理**:探讨如何在Pro*C中...

    oracle培训pro*c

    Oracle Pro*C 是一种集成的开发工具,用于在C语言中嵌入SQL语句,以便高效地与Oracle数据库进行交互。这种技术将C语言的强大功能与SQL的数据库操作能力结合在一起,提供了一种灵活且高性能的方式来构建数据库应用...

    Oracle Pro*C 编程入门.pdf

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

    pro*c学习资料

    PRO*C为开发者提供了一种将SQL语句嵌入C语言程序的有效方式,使得开发者可以在保持C语言强大逻辑处理能力的同时,充分利用SQL语言进行高效的数据管理。通过了解PRO*C的基本概念、程序结构以及如何使用SQL语句,...

    pro*c sample

    Pro*C是Oracle公司开发的一种预编译器,它允许程序员在C语言中嵌入PL/SQL代码,使得C程序可以直接与Oracle数据库交互。通过Pro*C,开发者可以利用C语言的强大功能和效率,同时享受Oracle数据库提供的高级数据库操作...

    《精通Oracle 10g Pro*C/C++编程》源代码与学习笔记

    8. **动态SQL**:在Pro*C中,可以使用字符串拼接或者EXEC SQL EXECUTE IMMEDIATE语句执行动态SQL,这在处理灵活的查询需求时非常有用。 9. **存储过程和函数**:学习如何在C/C++中调用Oracle的存储过程和函数,以及...

    Pro*C程序设计ORACLE调用接口

    《Pro*C程序设计ORACLE调用接口》是关于在C语言中使用Oracle数据库的一种高效方法。Pro*C,全称为Pre-Compiler for C,是Oracle公司提供的一个预编译器,它允许开发者直接在C程序中嵌入SQL语句,极大地提高了数据库...

    使用Pro*C/C++ 开发嵌入式SQL程序

    7. **游标和动态SQL**:Pro*C/C++支持游标,可以用来遍历查询结果,也可以用于执行动态SQL。动态SQL允许在运行时构建SQL语句,增加了程序的灵活性。 8. **事务管理**:使用`EXEC SQL BEGIN WORK`、`EXEC SQL COMMIT...

    linux下c/c++连oracle数据库技术pro*c

    3. **Pro*C编译器**: Pro*C编译器通常位于`$ORACLE_HOME/bin`目录下,名为`proc`。使用`proc`命令可以预编译包含PL/SQL的源代码文件,生成C/C++源代码。 4. **Pro*C语法**: 在Pro*C程序中,使用`EXEC SQL`语句...

    精通PRO*c编程

    PRO*C是Oracle Corporation为C程序员设计的一种工具,它允许在C程序中嵌入SQL语句,使得C语言能够与Oracle数据库无缝集成。 一、PRO*C简介 PRO*C是Oracle数据库的C语言接口,它扩展了C语言,增加了对SQL和PL/SQL的...

    PRO*C入门实例

    在IT领域,PRO*C是Oracle公司提供的一种预编译器,它允许开发人员使用C语言来编写PL/SQL代码,从而更高效地与Oracle数据库进行交互。这个“PRO*C入门实例”可能是针对初学者的一个教程,通过一个实际的代码示例来...

    Pro*C/C++ 编程

    Pro*C/C++ 是一种集成在C或C++编程语言中的预处理器,它允许程序员直接在源代码中嵌入PL/SQL语句,用于与Oracle数据库进行交互。这种编程方式提供了高效且灵活的数据库访问手段,特别适合于开发与Oracle数据库紧密...

    java 调 pro*c

    Pro*C将C源代码和SQL语句结合在一起,通过预处理器将SQL语句转换为C语言中的函数调用。然后,开发者可以编译这些源代码为动态链接库或静态库,供其他程序(如Java应用)调用。 在Java中调用Pro*C程序通常涉及到以下...

    oracle pro*c入门

    9. **带参动态SQL**:Pro*C允许使用动态SQL来构建和执行在运行时决定的SQL语句,这对于处理参数化查询非常有用。 10. **oci接口**:除了Pro*C,Oracle还提供了Oracle Call Interface (OCI),这是一种更底层的C接口...

    pro*c程序设计详解

    Pro*C是Oracle公司提供的一种预编译器,它允许程序员在C语言中直接嵌入SQL语句,从而实现高效的数据库操作。以下是对Pro*C程序设计主要知识点的详细阐述: 1. **Pro*C概述**:Pro*C是C语言的一个扩展,它引入了特殊...

    Pro*C

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

    Pro*C增删改查Oracle数据库的代码

    Pro*C增删改查Oracle数据库中数据表的代码

    VC整合Pro*C开发环境配置(图)

    Pro*C是Oracle公司提供的一种预编译器,它允许C/C++程序员直接在C或C++代码中嵌入SQL语句,从而实现与Oracle数据库的紧密交互。下面将详细阐述这一配置过程。 **1. 安装必要的组件** 首先,确保已经安装了以下组件...

    pro*c 的 资料

    3. **Pro*C 程序的组成部分** - **应用程序首部**:包含 C 变量描述、SQL 变量描述(DECLARE 部分)和 SQL 通信区。 - **DECLARE 部分**:定义程序中的 SQL 变量,如 VARCHAR、INT、SHORT、LONG、FLOAT、DOUBLE 等...

Global site tag (gtag.js) - Google Analytics