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

pro*c 游标

 
阅读更多
*/  
#include    
#include    
#include    
  
#include    
#pragma comment(lib, "orasql10.lib") 
  
int connect();  
void cursor();  
void sql_error();  
  
void main()  
{  
    EXEC SQL WHENEVER SQLERROR DO sql_error();  // 安装错误处理句柄   
    if(connect() == 0)  
    {  
        cursor();  
        EXEC SQL COMMIT RELEASE;                // 提交事务,断开连接   
    }  
    else  
        printf("连接失败\n");  
}  
  
int connect()                   // connect to oracle database   
{  
    char username[10], password[10], server[10];  
  
    strcpy(username, "scott");  
    strcpy(password, "scott");  
    strcpy(server, "orcl");  
  
    EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server; 
  
    if(sqlca.sqlcode == 0)  
        return 0;  
    else  
        return sqlca.sqlcode;  
}  
  
void sql_error()                // print error infomation   
{  
    printf("%.*s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);  
}  
  
void cursor()                   // 游标操作   
{  
    int dno;                    // 定义宿主变量   
    char name[10];  
    float salary; 

// 定义游标变量 
sql_cursor emp_cursor; // sql_cursor:是Proc*C/C++的伪类型 

printf("请输入部门号:"); 
scanf("%d", &dno); 

EXEC SQL ALLOCATE :emp_cursor; // 分配游标变量 
  
EXEC SQL EXECUTE 
BEGIN 
OPEN :emp_cursor FOR Select ename, sal from emp where deptno=:dno; 
END; 
END-EXEC; 

    EXEC SQL WHENEVER NOT FOUND DO BREAK;   // 游标数据提取完毕后退出循环 
    while(1) 
    {  
        EXEC SQL FETCH :emp_cursor into :name, :salary; 
printf("name = %s(%d), salary = %4.0f\n", name, strlen(name), salary); 
    } 
EXEC SQL CLOSE :emp_cursor; // 关闭游标变量 
EXEC SQL FREE :emp_cursor; // 释放游标变量 
  
    printf("sqlca.sqlerrd[2] = %d\n", sqlca.sqlerrd[2]);        // sqlca.sqlerrd[2]存放着Select语句作用的行数   
} 

 [code="java"]/*
    功能:演示了Oracle滚动游标变量的使用

    定义游标时注意事项:
    1. DECLARE CURSOR语句必须是使用游标的第一条语句
    2. 游标名称是一个标识符,而不是宿主变量,其长度是可以任意的,但只有前31个字符有效
    3. 游标所对应的SELECT语句不能包含INTO子句
    4. 游标语句(DECLARE,OPEN,FETCH,CLOSE)必须在同一个预编译单元内



 

非滚动游标:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
void connect();
void sql_err();void cursor();
void main()
{
   EXEC SQL WHENEVER SQLERROR  DO sql_err();
   connect();
   cursor();
   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 cursor()/*游标的标准使用方式,声明,打开,抓取,关闭*/
{
    EXEC SQL BEGIN DECLARE SECTION;
    int dno,eno;
    char name[20];
    float salary;
    EXEC SQL END DECLARE SECTION;
    printf("input dept no: ");
    scanf("%d",&dno);
    EXEC SQL DECLARE emp_cursor CURSOR FOR
         SELECT empno,ename,sal FROM emp WHERE deptno=:dno;
    EXEC SQL OPEN emp_cursor;
    EXEC SQL WHENEVER NOT FOUND DO sql_err();
    printf("a");
    for(;;)
    {
    EXEC SQL FETCH emp_cursor INTO :eno,:name,:salary;
    printf("employee:%s,salary:%f\n",name,salary);
    }
    EXEC SQL CLOSE emp_cursor;


}


 

 

 

  • 大小: 411.1 KB
分享到:
评论

相关推荐

    游标在Oracle PRO*C中的使用方法及技巧.pdf

    Oracle PRO*C是一种预编译器,它允许开发者在C语言中嵌入PL/SQL代码,从而利用C语言的高效性和PL/SQL对数据库的强大操作能力。在处理大量数据时,游标是必不可少的工具,它可以逐行处理查询结果,特别适用于需要按行...

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

    Pro*C中使用游标来逐行处理查询结果,而绑定变量则用于在SQL语句中传递参数,提高性能并减少SQL注入的风险。 4. **异常处理**:Oracle提供了一套完整的错误处理机制,Pro*C编程中需要了解如何捕获和处理Oracle的...

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

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

    Pro*c编程电子图书

    Pro*C,全称为Oracle Precompiling C,是Oracle公司推出的一种混合C语言和SQL的编程工具,它允许开发人员在C程序中直接嵌入SQL语句,以提高数据库应用的性能和效率。这种技术特别适用于需要高效访问Oracle数据库的...

    pro*c sample

    **Pro*C是什么** Pro*C是Oracle公司开发的一种预...总的来说,这个"pro*c sample"是一个全面展示Pro*C特性和数据库操作的实例,包括了基本的CRUD操作和高级的游标、数组处理,对于学习和理解Pro*C编程非常有帮助。

    PRO*C入门实例

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

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

    Pro*C是Oracle公司提供的一种预编译器,它允许C或C++程序直接调用PL/SQL代码,极大地简化了数据库操作。本篇文章将详细探讨Linux下使用C/C++和Pro*C连接Oracle数据库的技术细节。 1. **Pro*C介绍**: Pro*C是...

    Oracle Pro*C 编程入门.pdf

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

    Pro*C/C++ 编程

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

    pro*c程序设计详解

    《Pro*C程序设计详解》是一本深入探讨Pro*C编程技术的专业书籍,旨在帮助读者全面理解和掌握Pro*C这一C语言与Oracle数据库交互的重要工具。Pro*C是Oracle公司提供的一种预编译器,它允许程序员在C语言中直接嵌入SQL...

    精通PRO*c编程

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

    oracle pro*c入门

    7. **游标**:在处理多个结果集时,游标是非常重要的。Pro*C允许使用游标进行逐行处理查询结果,通过声明、打开、提取和关闭游标来实现。 8. **事务处理**:Pro*C支持事务控制,包括COMMIT、ROLLBACK和SAVEPOINT,...

    Oracle数据库Pro*c的实例

    Oracle数据库的Pro*C是一种预处理器,它允许C程序员直接在C代码中嵌入SQL语句,从而方便地与Oracle数据库进行交互。这个简单的例子详细展示了如何使用Pro*C编写、预编译和编译一个简单的程序。 首先,让我们了解Pro...

    游标最简单教程

    1. **声明游标**:`CURSOR mycur IS SELECT a.OperateDateTime, b.md_id FROM BL_InStore a, Ma_Detail b, ma_basis c WHERE a.bi_mbid = b.md_mbid AND a.bi_mbid = c.mb_id AND a.flag = 1;` 定义了一个名为`mycur...

    PRO*C的批量读取

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

    Pro*C/C++ Precompiler Getting Started Release 8.1.6 for Window

    《Pro*C/C++预编译器入门指南 8.1.6 for Windows》是Oracle公司为开发者提供的一份关于在Windows环境下使用Pro*C/C++工具的起步教程。这份文档主要涵盖了如何利用C++语言与Oracle数据库进行交互的预编译技术,旨在...

    pro*c 的 资料

    - **游标**:在 Pro*C 中,游标用于处理 SELECT 语句返回的结果集,可以逐行处理数据,通过声明和使用游标,可以实现更复杂的查询逻辑。 总之,Pro*C 提供了一种高效且灵活的方式,让开发者能够利用 C 语言的强大...

    pro*c 实现分页总结

    Pro*C,是Oracle提供的一种预编译器,用于将C语言与PL/SQL结合,使得在C/C++程序中可以直接操作Oracle数据库。本文将深入探讨如何在Pro*C中实现分页查询,主要关注两种常用的方法。 首先,让我们回顾一下基本的分页...

    Oracle_PLSQL PRO*C 程序设计

    4. **游标**:用于处理查询结果集,允许逐行处理数据,是数据库操作中的重要工具。 5. **存储过程和函数**:封装可重用的代码,可以接受参数并返回结果,提高代码的可维护性和效率。 6. **包**:包含一组相关的...

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

    根据提供的文档信息,我们可以深入探讨Pro*C/C++ Programmer’s Guide, 10g Release 2 (10.2)中的核心知识点。这份文档是Oracle针对使用C和C++语言编程时与Oracle数据库交互的技术指南。 ### 一、Pro*C/C++简介 ...

Global site tag (gtag.js) - Google Analytics