proc_day01

来源:互联网 发布:淘宝立即购买灰色 编辑:程序博客网 时间:2024/04/25 09:32
一.proc简介
   1.1 什么是pro程序
   通过在过程化编程语言中嵌入sql语句
      开发出的应用程序叫pro程序。
   宿主语言:sql语句所嵌入的语言
   1.2 为要使用proc/c++
   使用c或者c++ 这种高效的语言成为
       访问oracle数据库的工具。
 二.proc程序的实例 
   和c程序相同的部分
      定义变量
      声明函数
      实现函数
      使用c的头文件 和库函数 
   和c程序的不同
      exec sql  include sqlca;
      连接数据库
      exec sql  connect:username 
          identified by:userpasswd;
      exec sql  connect:username/passwd;
      查询数据库
      exec sql select first_name into var_name 
          from s_emp where id=1;
      断开数据库连接
      exec sql commit work release;
      exec sql rollback work release;
三.写一个c程序步骤
   编写源代码
       vi  ***.c 
   编译
       gcc  -c  ***.c 
   链接
       gcc   ***.o
   执行
       ./a.out 
四. proc 程序编写 运行流程
   编写源代码
       vi   ***.pc 
   预编译  把pc文件 转换成c文件
       proc  ***.pc 
   编译 链接
       gcc   ***.c  -lclntsh 
       (windows  -lorasql10 )
   执行程序 
       ./a.out             
   
   写一个proc程序 连接oracle数据库 
   把s_emp 表中id=1的first_name 
   查询出来放入一个c变量中,并打印
   这个c变量的值。
   
五.proc 的预编译选项
   oname   指定输出文件名 
       proc  first.pc  oname=testproc.c        
   和c++ 数据库编程相关的
   oname   parse   code
   和字符串处理相关的
   char_map
   和plsql调用相关的
   sqlcheck     userid
   
六.宿主变量
   6.1 特点
   这种变量既能在sql语句中使用 有能在宿主
   语言中使用。   
   6.2 宿主变量的类型
   char   var[n]   定长字符串
   char            字符类型
   short  
   int
   long
   float
   double
   varchar   var[n]  变长字符串
   6.3 定长字符串 和 变长字符串
    定长字符串  char  var[n]
    变长字符串  varchar var[n]
        变长字符串变量在select语句中要和
        普通变量一样去使用。
        在宿主语言中 要通过变量名.arr取得
        相应的数据。
        注意垃圾值问题。
            varchar var[n]={0};
            var.arr[var.len]='\0';
    使用char_map 处理字符串
        char_map=charz 默认的  
            定长处理  空格补齐 \0结尾
        char_map=charf|varchar2
            定长处理  空格补齐  
        char_map=string 
            变长处理  \0结尾
             
   6.4 宿主变量的使用注意事项
     宿主变量定义时 建议放入申明区 能避免
         系统和语言的差异。
         exec sql begin declare section;
             
         exec sql end   declare section;
     宿主变量 可以使用指针 但要分配内存
         
     DDL 中不能使用宿主变量 
         char table_name[30]="s_emp";
         exec sql drop table table_name;
         exec sql drop table :table_name;                              
     在sql语句使用宿主变量时 尽量加上:
                   
七. 指示变量
    7.1 概念
    当数据库中的字段值 赋值给宿主变量时
    赋值的状态可以通过指示变量获得。
    ==0    赋值正常
    ==-1   数据库的字段值是NULL值
    >0     截断赋值 (尽量避免)
    7.2 语法
    指示变量必须是short类型
    select 字段名 into  
        :宿主变量名:指示变量名 
        from  表名  where 条件; 
    select 字段名 into  
        :宿主变量名 indicator :指示变量名 
        from  表名  where 条件;      
    7.3 举例
    把id=1的员工的manager_id 赋值给一个宿
    主变量并且使用指示变量指示赋值的状态。


八.数组变量
   8.1 数组变量的使用注意事项
      proc只支持一维数组 字符除外
      最大元素个数32767
      proc 不支持数组指针
      在select语句使用数组时 只能给出
         数组名 不能给下标。
   8.2 把s_emp 表中所有的 id  和 
   first_name  分别放入两个数组中。
   然后输出这两个数组的值。
   int    var_ids[50];
   char   var_names[50][30];
   
   这个可以获取sql语句所影响的行数
   sqlca.sqlerrd[2]
   
   
                                                     
0 0
原创粉丝点击