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

Unix下Pro*c编译命令

 
阅读更多

目 录
Pro*C&C++
Pro*c简单实例
Unix下Pro*c编译命令
什么是Pro*C&C++
Pro*c中使用plsql获取多条记录
Pro*C能支持什么

 

--------------------------------------------------------------------------------


Pro*C&C++


[目录]

--------------------------------------------------------------------------------


Pro*c简单实例

/*
* filename:model.pc
* author:alamo
* inc:sinosoft
* create time:2001.3.24
* update time:
* desc:it is a model file for write pro*c programe for oracle+tuxedo
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlda.h>
#include <sqlcpr.h>
#include <atmi.h>
#include <fml.h>
#include <userlog.h>

/* set pro*c operation */
exec sql include sqlca;
exec sql include oraca;
exec oracle option (oraca=yes);

/* Define constants for VARCHAR lengths. */
#define UNAME_LEN 20
#define PWD_LEN 40

/* Declare variables. No declare section is
needed if MODE=ORACLE. */
VARCHAR username[UNAME_LEN]; /* VARCHAR is an Oracle-supplied struct */
varchar password[PWD_LEN]; /* varchar can be in lower case also. */

/* Declare error handling function. */
void sql_error(msg)
char *msg;
{
char err_msg[128];
size_t buf_len, msg_len;

EXEC SQL WHENEVER SQLERROR CONTINUE;

printf("\n%s\n", msg);
buf_len = sizeof (err_msg);
sqlglm(err_msg, &buf_len, &msg_len);
printf("%.*s\n", msg_len, err_msg);

EXEC SQL ROLLBACK RELEASE;
exit(EXIT_FAILURE);
}

void main()
{

/* Connect to ORACLE--
* Copy the username into the VARCHAR.
*/
strncpy((char *) username.arr, "sgac_dec", UNAME_LEN);

/* Set the length component of the VARCHAR. */
username.len =
(unsigned short) strlen((char *) username.arr);

/* Copy the password. */
strncpy((char *) password.arr, "dbwork", PWD_LEN);
password.len =
(unsigned short) strlen((char *) password.arr);

/* Register sql_error() as the error handler. */
EXEC SQL WHENEVER SQLERROR DO sql_error("ORACLE error--\n");

/* Connect to ORACLE. Program will call sql_error()
* if an error occurs when connecting to the default database.
*/
EXEC SQL CONNECT :username IDENTIFIED BY :password;

printf("\nConnected to ORACLE as user: %s\n", username.arr);

/* Disconnect from ORACLE. */
EXEC SQL ROLLBACK WORK RELEASE;
exit(EXIT_SUCCESS);
}


[目录]

--------------------------------------------------------------------------------


Unix下Pro*c编译命令

#编译pc文件为c文件
proc include= filename.pc
#编译c文件,生成目标文件
cc -I$ORACLE_HOME/precomp/public -c filename.o filename.c
#连接目标文件,生成可执行程序.32位系统是在linb32下
cc -L$ORACLE_HOME/lib -lclntsh -o filename filename.o
example
#使用pl/sql块时必须设置sqlcheck
rm model_exe.c
proc include=${TUXDIR}/include model_exe.pc SQLCHECK=FULL userid=scott/tiger
rm model_exe.o
cc -I$ORACLE_HOME/precomp/public -I$TUXDIR/include -c model_exe.o model_exe.c
rm model_exe
cc -L$ORACLE_HOME/lib -lclntsh -o model_exe model_exe.o

 


[目录]

--------------------------------------------------------------------------------


什么是Pro*C&C++

Pro*C/C++预编译将嵌入在你的C和C++程序中的SQL语句转换成标准的C代码。预编译这些代码后,C和C++程序你可以编译和使用去构造应用和访问ORACLE数据库。
去访问ORACLE数据库,你使用高级查询语言即SQL语言。Pro*C/C++是预编译器转换C语句中的EXEC SQL命令。
ORACLE公司针对ORACLE数据库开发的一种SQL嵌入式开发语言。
在C代码中嵌入SQL语言,C代码用宿主变量与SQL进行交换数据。
预编译后生成标准C代码。


[目录]

--------------------------------------------------------------------------------


Pro*c中使用plsql获取多条记录

valueStr VARCHAR; // 接收查询结果的字符串,注意长度不能小于返回的结果字符的长度
EXEC SQL EXECUTE
DECLARE
resultStr VARCHAR2(行长度*可能的最大行数) := ''; // 行长度要>=各字段长度之和
BEGIN
FOR cur1 IN(sql语句) LOOP // SQL语句中列的写法为 c1||'||'||c2... rowStr
resultStr := resultStr||cur1.rowStr||'!!';
END LOOP;
if(length(resultStr) > 0) then -- 如果为空,出现PROC异常
:valueStr := resultStr;
end if;
END;
END-EXEC;

例子:
var x varchar2(4000);
DECLARE
resultStr varchar2(4000);
begin
for cur1 in(select deptno||dname||loc rowStr from dept) loop
resultStr := resultStr||cur1.rowStr||'!!';
end loop;
:x := resultStr;
end;
/


[目录]

--------------------------------------------------------------------------------


Pro*C能支持什么

1.远程(通过NET8)或者本地访问ORACLE8服务器,版本8.0。
2.可嵌入PL/SQL块。
3.捆绑式数据库调用,在C/S环境下能够达到最好的性能。
4.完全参照ANSI标准的SQL程序。
5.PL/SQL过程中PL/SQL8.0版。
6.多层应用。
7.ANSI标准C。
8.支持Microsoft Visual C++ 5.0版32位应用。
9.支持Borland C++ 5.0版32位应用。

分享到:
评论

相关推荐

    unix 环境下oracle pro*c程序的编译程序

    unix 或linux操作系统下oracle pro*c程序编译程序

    ProCC++程序设计

    **Pro*C**是一种由Oracle提供的预编译工具,用于将C语言程序中的SQL语句预编译成能够直接与Oracle数据库交互的二进制代码。它主要用于在银行业务、电信营账等领域,这些领域通常需要高效的数据处理能力以及高度定制...

    Windows下编译Qt

    3. **执行编译命令:** - 运行`nmake`开始编译Qt源码。 - 此步骤可能需要较长时间才能完成。 4. **清理中间文件(可选):** - 使用`nmake clean`命令清理中间文件,可以节省磁盘空间。 - 注意,这一步是可选的...

    tuxedo开发介绍

    - **PROC与Pro*C**:PROC是Tuxedo的C语言接口,允许开发者编写C程序来操作Tuxedo服务。Pro*C是Oracle提供的预编译器,用于将嵌入式SQL语句编译到C程序中,便于与数据库交互。 - **UNIX**:Tuxedo通常运行在UNIX...

    makefile的例子FOR AIX

    4. **预处理器(Preprocessor)**:在Pro*C的情况下,`cpp`命令(或者`proc`命令,对于Pro*C)会用来预处理源文件,将SQL语句转化为C函数调用。 5. **编译器(Compiler)**:对于C/C++项目,`gcc`或`g++`是常用的...

    Qt的pro文件转VS的工程文件

    在探讨如何将Qt的pro文件转换为Visual Studio(VS)的工程文件之前,我们首先需要了解几个关键概念:Qt的项目文件(pro文件)、Visual Studio的解决方案与项目文件以及qmake工具。 ### Qt的pro文件 Qt项目文件...

    star-cd 最新版本教程

    - **命令**:CSET, VSET, BSET, SPLSET, BLKSET - **选项1**:ALL, NONE, NEWSet, ADD, DELEte, SUBSet, INVE - **选项2**:List, Type, Zone, NumberRange, GeometricRange #### 编辑操作 - **Edit Types**:定义...

    tmake 使用说明

    - 使用 `tmake` 命令根据 `.pro` 文件生成 `Makefile`: ``` tmake hello.pro -o Makefile ``` 3. **编译程序**: - 运行 `make` 命令来编译项目: ``` make ``` #### 五、Makefile 模板 `tmake` 提供了...

    qmake用户手册 qmake用户手册.pdf

    3. **使用qmake命令**:一旦创建了 .pro 文件,就可以通过运行 `qmake project.pro` 命令来生成 Makefile 文件。之后可以通过执行 `make` 或者 `mingw32-make`(对于 Windows 用户)来构建项目。 通过上述步骤,...

    CS大作业-hello的“一生”

    **在Ubuntu下预处理的命令** 在Ubuntu系统中,预处理命令通常由GCC编译器的一部分完成,可以通过如下命令进行预处理: ``` gcc -E hello.c -o hello.i ``` 这里`-E`选项告诉GCC仅进行预处理,不进行后续的编译...

    param.rar_Linux/Unix编程_Unix_Linux_

    综上所述,这个压缩包包含的资源很可能与Linux系统下的Intel PRO 1000网络驱动程序的开发有关,涉及到了C语言编程、系统调用、设备驱动开发等多个Linux/Unix编程的核心领域。通过研究这些源代码,开发者可以学习到...

    star-cd中文培训教程

    - **Prostar**:在UNIX系统下启动PROSTAR的命令。 - **Prolinkl**:用于生成带有自定义参数设置的本地执行文件“prol-xm”。 - **Starlink**:用于编译STAR可执行文件。 - **Ufile**:存放所有子程序的目录。 #### ...

    使用CMAKE3.22+QT5.13编译后的opencv4.4(32位的)

    在本文中,我们将深入探讨如何使用CMake 3.22和QT 5.13编译OpenCV 4.4,特别是在32位环境下。首先,我们需要理解这些工具的作用和重要性。 CMake是一个跨平台的开源构建系统,它能够生成针对不同IDE和构建系统的...

    Makefile及Qmake详解

    Makefile是Unix/Linux系统下的一种自动化构建工具,它定义了一系列规则来编译、链接源代码文件,生成可执行程序。一个基本的Makefile包含目标、依赖项和命令。例如,`target: dependency`结构表示目标文件依赖于哪些...

    pro2.tar.gz_Linux/Unix编程_Unix_Linux_

    为了进一步学习和理解这个项目,开发者需要熟悉C语言的基本语法,理解如何在Linux/Unix环境下编写和编译程序,还要掌握Allegro库的基本用法,包括如何初始化和关闭Allegro、如何绘制图形、响应用户输入等。...

    ixgb_osdep.rar_Linux/Unix编程_Unix_Linux_

    总的来说,ixgb_osdep.rar包含的驱动程序源代码文件ixgb_osdep.c是为Linux系统设计的Intel PRO 10GbE网卡的驱动核心,它的理解和使用涉及到Linux/Unix驱动开发、网络设备原理、系统调用等多个方面的知识。...

    oracle 10g 在HP-UX 的安装步骤

    针对PL/SQL本地编译、Pro*C/C+、Oracle Call Interface等的额外补丁如PHSS_33278、PHSS_33279也应确保安装。 #### 安装前准备 1. **下载并解压安装包**:首先需下载Oracle 10g R2的数据库安装包10gr2_database_...

    CygwinPortable

    2. **开发跨平台软件**:Cygwin提供了GCC编译器,可以编译和调试C、C++、Fortran等语言的代码,使得在Windows上开发Unix/Linux应用成为可能。 3. **自动化任务**:使用bash脚本和工具如awk、sed,可以编写复杂的文件...

Global site tag (gtag.js) - Google Analytics