Pro*C/C++同时支持C和C++,但是当预编译包含C++代码的PC源程序时,必须合理地设置相关的预编译选项。

代码:xx.pc

/*功能:演示了Pro*C/C++源程序生成C++源文件说明:Pro*C/C++支持C和C++。当预编译包含C++代码的PC源程序时,必须合理地设置相关的预编译选项。预编译选项应该设置为cpp_suffix=cpp code=cpp parse=none(或partial)code = ANSI_C, KR_C, CPPparse = NONE, PARTIAL, FULLcpp_suffix = c, cpp, cc*/#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>EXEC SQL BEGIN DECLARE SECTION;            // 定义宿主变量struct empdat{varchar emp_name[10];float salary;float commission;}emprec;struct empind{short emp_name_ind;short sal_ind;short comm_ind;}emprec_ind;int eno;
EXEC SQL END DECLARE SECTION;class emp                              // 自定义类
{char ename[10];float salary;float commission;public:emp();emp(empdat &dat, empind &ind);void setvalues(empdat &dat, empind &ind);friend ostream& operator<<(ostream &s, emp &e);     // 定义友元函数
};emp::emp()
{memset(ename, 0, sizeof(ename));salary = commission = 0.0;
}emp::emp(empdat &dat, empind &ind)
{strncpy(ename, (char*)dat.emp_name.arr, dat.emp_name.len);ename[dat.emp_name.len] = '\0';this->salary = dat.salary;this->commission = (ind.comm_ind < 0) ? 0 : dat.commission;
}void emp::setvalues(empdat &dat, empind &ind)
{strncpy(ename, (char*)dat.emp_name.arr, dat.emp_name.len);ename[dat.emp_name.len] = '\0';this->salary = dat.salary;this->commission = (ind.comm_ind < 0) ? 0 : dat.commission;
}ostream& operator <<(ostream &s, emp &e)
{return s<<"name: "<<e.ename<<", salary: "<<e.salary<<", comm: "<<e.commission<<endl<<endl;
}#include <sqlca.h>
#pragma comment(lib, "orasql10.lib")int connect();
void sql();
void sql_error();void main()
{  EXEC SQL WHENEVER SQLERROR DO sql_error();  // 安装错误处理句柄   if(connect() == 0)  {  sql();  EXEC SQL COMMIT WORK RELEASE;           // 提交事务,断开连接   }  else  printf("连接失败\n");
}  int connect()                   // connect to oracle database
{  EXEC SQL BEGIN DECLARE SECTION;              // 定义宿主变量char username[10], password[10], server[10];  EXEC SQL END DECLARE SECTION;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 sql()
{  emp e;while(1){cout<<"请输入雇员号(0:退出):";flush(cout);scanf("%d", &eno);fflush(stdin);if(eno == 0)return;EXEC SQL WHENEVER NOT FOUND goto notfound;   // 游标数据提取完毕后退出循环EXEC SQL select ename, sal, comm into :emprec indicator :emprec_ind from emp where empno=:eno;e.setvalues(emprec, emprec_ind);cout<<e;continue;notfound:cout<<"无效雇员号"<<endl<<endl;}printf("sqlca.sqlerrd[2] = %d\n", sqlca.sqlerrd[2]);        // sqlca.sqlerrd[2]存放着Select语句作用的行数
}

xx.pc文件对应的预编译选项如图:

pro*C/C++支持c++开发实例相关推荐

  1. Android音乐播放器的开发实例(2021新版-Java版)

    Android音乐播放器的开发实例 介绍 该项目旨在引导喜爱 Android 开发爱好者入门教程实例,可以一步一步的跟着来完成属于自己的项目开发过程. 此项目为基于 Java 语言开发,使用 Recy ...

  2. Android AR开发实践之四:基于Sceneform的ARcore开发实例

    Android AR开发实践之四:基于Sceneform的ARcore开发实例 一.设备配置 1.配置虚拟设备 2.配置真机 二.开发环境配置 1.首先添加sceneform的gradle插件到工程配 ...

  3. 安卓音乐播放器开发实例

    本文将引导大家做一个音乐播放器,在做这个Android开发实例的过程中,能够帮助大家进一步熟悉和掌握学过的ListView和其他一些组件.为了有更好的学习效果,其中很多功能我们手动实现,例如音乐播放的 ...

  4. AgileEAS.NET平台开发实例-药店系统-报表开发(高级篇)

    开篇 上篇我们讲述了报表开发的独立开发与基于平台的开发二种方式,相信大家已经对报表开发有了一定的了解,那么我们本篇将会巩固大家对报表开发的知识,我们这里提供一 个我们平时在项目中应用到的一些关于报表开 ...

  5. php 微信开发 菜单,微信公众号中个性化菜单的开发实例

    微信公众号中个性化菜单的开发实例 个性化菜单让公众号的不同用户群体看到不一样的自定义菜单.该接口开放给已认证订阅号和已认证服务号,个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Andro ...

  6. OpenCV android sdk配置OpenCV android NDK开发实例

    OpenCV android sdk配置OpenCV android NDK开发实例 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/det ...

  7. RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)...

    RDIFramework.NET-.NET快速信息化系统开发整合框架 [开发实例 EasyUI]之产品管理(MVC版) RDIFramework.NET-.NET快速开发整合框架 [开发实例]之产品管 ...

  8. 2021爱智先行者—(2)零基础APP开发实例

    [本文正在参与"2021爱智先行者-征文大赛"活动],活动链接:https://bbs.csdn.net/topics/602601454 欢迎关注 『Python小白的项目实战』 ...

  9. JAVA :RESTLET开发实例(一)基于JAX-RS的REST服务

    本文转自http://www.cnblogs.com/redmondfan/p/3209290.html,所有权力归原作者所有. RESTLET介绍 Restlet项目为"建立REST概念与 ...

最新文章

  1. 洛谷乐多赛 yyy loves Maths VI (mode)
  2. 面试7 GC机制中如何判断一个对象是否任在使用
  3. Git的SourceTree添加授权添加用户名与密码
  4. 如何找到SAP CRM One Order节点ID对应的描述信息(名称)
  5. 你的 GNN,可能 99% 的参数都是冗余的
  6. Java-P:面向对象编程
  7. 【Spark】Spark cache 报错 Exception thrown in awaitResult
  8. win8卸载mysql数据库,彻底卸载win8自带的metro应用的方法
  9. 开发人员提升自己的四种方式
  10. 干货 | 大公司机器学习算法的面试经验
  11. mybatis学习笔记(10)-一对一查询
  12. 一个开源vue网站博客,nuxt开源网站,前后端分离项目
  13. xcode 可以打开xmind_思维导图,原来Xmind这么强大
  14. 从qire123上抓取bdhd下载地址的firefox extension
  15. java short 写法_Java数据类型short的使用方法
  16. 配对交易之统计套利配对:介绍
  17. echarts-liquidfill 水滴图/水位图/水球 下载地址
  18. ActiveX控件打包cab时INF文件的编写[转]
  19. Python - 文件基础操作
  20. nowcoder 高矮排列

热门文章

  1. plotly django_使用Plotly为Django HTML页面进行漂亮的可视化
  2. leetcode 697. 数组的度(hashmap)
  3. leetcode491. 递增子序列(回溯算法)
  4. leetcode851. 喧闹和富有(dfs)
  5. onclick判断组件调用_从子组件Onclick更新状态
  6. 上海区块链会议演讲ppt_所以您想参加会议演讲吗? 这是我的建议。
  7. 面试官面试前端_如何面试面试官
  8. 文本数据可视化_如何使用TextHero快速预处理和可视化文本数据
  9. 第一名数据科学工作冠状病毒医生
  10. mysql 索引及索引创建原则