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]
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
- proc_day01
- [Android][N/A][SMS]PDU解析——利用AT指令发送CLASS分类短信
- 霍夫曼编码压缩
- 蓝桥杯 ALGO-105 黑色星期五(日期)
- WindowsPhone开发如何创建动态启动界面
- 算法——归并排序
- proc_day01
- 算法之美
- iOS系统的一些单例类
- proc_day02
- android开发错误之“ Connection with adb was interrupted”
- 5.8在Mifare S50中,如果第2区的访问控制码为FF 08 70 69,则该区块1和3的访问控制条件是什么
- ImageCache 图片缓存强引用
- proc_day03
- [Leetcode]Symmetric Tree