ORACLE为C语言开发提供的预编译开发工具.PRO*C提供了类似于SQL语言的一些关键字来访问和操作数据库.包含PRO*C语句的文件必须经PRO*C预编译器编译后成为一般的语言文件.

解决方案 »

  1.   

    那用什么写‘包含PRO*C语句的文件’呀!
    是vc++吗?
      

  2.   

    安装oracle client自定义选择pro*c/c++预编译工具.
    用它可以编写pro*c程序,也可以用文本编辑
      

  3.   

    一般使用文本编写,如UNIX下使用VI编辑器
      

  4.   

    E:\oracle\ora92\precomp\demo\proc   --这个路径下比较多例子
      

  5.   

    谢谢各位。
    最后问下,编译成了dsp文件后,有什么用处( 在那里可以调用,怎么调用),可以在pl/sql中调用吗?
      

  6.   

    [转贴...] 在VC 中使用PRO*C  
      
    每个PRO*C 源文件一般由程序头和程序体两部分组成。程序头包含宿主变量(SQL 语句中所包含的变量)说明、通讯区定义和C 外部表示符的说明等。程序体一般是由若干函数组成,这些函数内含有SQL 语句(以EXEC SQL 起头的语句)。  
      
    PRO*C 支持的数据类型包括VARCHAR2( 变长字符串)、NUMBER( 二进制数)、INTGER( 有符号整数)、FLOAT( 浮点数)、STRING( 以NULL 结尾的字符串)、VARNUM( 变长二进制数)、LONG( 变长字符串)、VARCHAR( 变长字符串)、ROWID( 二进制值)、DATE( 定长日期/ 时间值)、VARRAW( 变长二进制数据)、RAW( 定长二进制数据) 、LONGRAW( 变长二进制数据)、UNSIGNED( 无符号整数)、LONGVARCHAR( 变长字符串)、LONGVARRAW( 变长二进制数据)、CHAR( 定长字符串)、CHARZ(C 中定长以NULL 结尾的字符串)、MLSLABEL( 变长二进制数据)。  
      
    在PRO*C 中不能使用'l' 或'u' 作词尾或&#390;x' 作词头修饰常量;在SQL 语句中使用单引号来定义字符串,用双引号来定义特殊的或小写字符的标识符( 如表名等);SQL 语句中不允许使用C 中的寻址、间接、位逻辑、复合赋值、?=、-、++、%、<<、>> 操作符并且用NOT、AND、OR、= 代替!、&&、||、==。  
      
    下面的程序是一个联结数据库的PRO*C 源程序例子。  
      
    #include < sqlca.h > //声明SQL通讯区  
      
    #include < string.h >  
      
    #include < afxwin.h >  
      
    EXEC SQL BEGIN DECLARE SECTION;  
      
    VARCHAR username[20]; //声明宿主变量  
      
    VARCHAR password[20];  
      
    VARCHAR dbname[20];  
      
    EXEC SQL END DECLARE SECTION;  
      
    void db_connect()  
      
    {  
      
    strcpy((char *)username.arr,"SCOTT");  
      
    username.len = strlen((char *)username.arr);  
      
    strcpy((char *)password.arr,"TIGER");  
      
    password.len = strlen((char *)password.arr);  
      
    strcpy((char *)dbname.arr,"SUNDB");  
      
    dbname.len = strlen((char *)dbname.arr);  
      
    EXEC SQL WHENEVER SQLERROR STOP; //隐式异常处理  
      
    EXEC SQL CONNECT :username  
      
    IDENTIFIED BY :password USING :dbname;  
      
    /*if (sqlca.sqlcode != 0) //显式异常处理  
      
    {  
      
    AfxMessageBox("\n与Oracle数据库连接失败!");  
      
    return;  
      
    }*/  
      
    }  
      
    在VC 中使用PRO*C 时,先用PRO*C 编写所需的操作数据库的子程序,再运行PRO*C 预编译程序把PRO*C 源程序转成相应的CPP 源程序,将该程序插入到用户工程文件中并在需要对插入函数进行调用的模块中说明函数,然后就可以在此模块中调用所需的函数。