一、变量声明
EXEC SQL BEGIN DECLARE SECTION;
/*…相关语句…*/
EXEC SQL END DECLARE SECTION;
SQL变量的类型声明语言:VARCHAR name[15];
EXEC SQL INCLUDE 语句
EXEC SQL VAR语句
EXEC SQL TYPE语句
二、数据类型
类型 |
代码 |
描述 |
VARCHAR2 |
1 |
不定长字符串,<=2000字节 |
NUMBER |
2 |
浮点数 |
LONG |
8 |
2147483647字节 |
ROWID |
11 |
16进制数 |
DATE |
12 |
日期,时间,7个字节 |
RAW |
23 |
定长2进制数据,255字节 |
LONGRAW |
24 |
变长2进制数据,2147483647字节 |
CHAR |
96 |
定长串,255字节 |
MLSLABEL |
105 |
定长2进制标号,5个字节 |
名称 |
内部数据类型 |
代码 |
描述 |
NEXTVAL |
NUMBER |
2 |
第一次访问一个序列,在引用 sequence.CURRVAL 之前必须先引用
sequence.NEXTVAL。第一次引用 NEXTVAL,返回序列的初始值。
后面每次引用 NEXTVAL,用已定义的 step 增加序列值并返回序列新的增加以后的值
|
CURRVAL |
NUMBER |
2 |
返回当前的序号,第一次使用需要先使用nextval |
ROWNUM |
NUMBER |
2 |
返回结果集序号,用于显示当前行号 |
LEVEL |
NUMBER |
2 |
用于返回树结构中一节点的层次号 |
USER |
VARCHAR2 |
1 |
当前ORACLE用户 |
UID |
NUMBER |
2 |
返回赋给ORACLE用户唯一的ID |
SYSDATE |
DATE |
12 |
返回当前日期和时间 |
名称 |
代码 |
描述 |
VARCHAR2 |
1 |
不定长字符串>=2000字节 |
NUMBER |
2 |
浮点数 |
INTGER |
3 |
|
FLOAT |
4 |
浮点,通常要求4或8字节 |
STRING |
5 |
以NULL结尾的字符串 |
VARNUM |
6 |
变长数,类似NUMBER,唯一区别是第一个字节存储该值的长度 |
LONG |
8 |
变长字符串,最大为2G字节,类似VARCHAR2 |
VARCHAR |
9 |
变长字符串,它含2字节的长度字段和小于65533字节的串字段,对于VARCHAR数组元素 |
ROWID |
11 |
标识行号 |
DATE |
12 |
定长日期 |
VARRAW |
15 |
变长2进制数据,存储2进制数据或字符串 |
RAW |
23 |
定长2进制数据,存储2进制传,最大255字节 |
LONGRAW |
23 |
变长2进制数据,最大长度2G,其他同RAW |
UNSIGNED |
68 |
无符号数,2进制数,2或4字节,并需指定长度 |
LONGVARCHAR |
94 |
变长字符串,由 长度和字符串组成,长度为前4位,字符串长度为2G |
LONGVARRAW |
95 |
变长2进制数据,类型LONGVARCHAR |
CHAR |
96 |
定长数组最长255 |
CHARZ |
97 |
C中以NULL结尾的字符串,最长255字节 |
MLSLABEL |
106 |
变长2进制数据 |
C语言数据类型 |
描述 |
char |
单字符 |
char[n] |
字符串 |
int |
整数 |
short |
|
long |
|
float |
|
double |
|
VARCHAR[n] |
变长字符串 |
三、数据类型的关联
sql变量 |
外部数据类型 |
|
char,char[n].char* |
VARCHAR2 |
|
char,char[n],char* |
CHAR |
|
int,int* |
INTEGER |
|
short,short* |
INTEGER |
|
long,long* |
INTEGER |
|
float,float* |
FLOAT |
|
double,double* |
FLOAT |
|
VARCHAR[n] |
VARCHAR |
|
四、类型等价
SQL变量等价
- 字符串必须以NULL中介,可以显示的声明变量等价保证,select活fetch出的字符串以NULL终结
- 使ORACLE只保存不解释数据,比如float类型以longraw形式在数据库
自定义类型等价
struct diagram{
short len;
char buff[4000];
};'
typedef struct digram graphics;
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL TYPE graphics is VARRAW(4000);
EXEC SQL END DECLARE SECTION;
如果变量为指针类型,而需要声明其指向的数据进行变量等价操作,可以使用REFERENCE
typedef unsigned char * my_raw;
EXEC SQL TYPE my_raw IS VARRAW(4000) REFERENCE;
五、SQL变量的声明和引用
SQL变量的声明
- 只能使用1维数组,如果为2维的char[][],ORACLE将其认为是1维的char*[]
- 可以声明数组,但是不能进行初始化
- 可以使用的关键字有auto,extern,static,const.volatile
- 不可以使用的有register
SQL变量引用
- 在SQL语句中变量前加上:运算符
- 在C语言语句中,直接使用
六、指示器变量的声明和引用
指示器变量的作用
- 向数据库列插入NULL值
- 检查数据库列中选出的数据是否为NULL,是否有截断
- 对于输入宿主变量,有以下含义
- -1:把NULL值存入数据库的表列中,而忽略宿主变量的值
- >=0:把指示器变量输入宿主变量并存入数据库中
- 对于输出宿主变量,有以下含义
- -1:数据库列的值是NULL,此时宿主变量的值为不确定状态
- 0:将原值赋予宿主变量
- >0:将原值赋予宿主变量后,将该列中的原始长度赋予指示器变量,并充值sqlcode为0;
指示器变量的声明
short ind_deptno;
int dept_number;
指示器变量的引用
在SQL语句中变量前加上:运算符
在C语言语句中,直接使用
EXEC SQL SELECT DEPT_NO INTO :dept_number :int_deptno FROM….
或加上关键字 INDICATOR
EXEC SQL SELECT DEPT_NO INTO :dept_number INDICATOR
:int_deptno FROM….
七、指针变量的声明和引用
指针变量的声明
- 同基本类型变量声明,在DECLARE BLOCK中声明即可
指针变量的引用
- 在SQL语句中使用:而不是*
- C语言中同C语言的用法
八、数组变量的声明和引用
数组sql变量的声明
- PRO *C不支持指针数组
- PRO *C只支持一维数组,而char[][]会被认为是一维字符串
- 数组最大维数为32767,超过此限制会有有一个异常产生
数组sql变量的引用
- SQL语句中只需要写数据名与前缀运算符:,不需要写下标
PRO C使用数组的优缺点
- 省去程序设计,省去大量不必要的变量命名和引用
- 改进程序性能,可以将批操作使用数组进行
- 当SQL语句中引用多个数组,这些数组的维数应该是相同的,否则PRO C会以最小的数组维数进行运算,并发出警告
- 在VALUES,SET,INTO或者WHERE语句中,不允许简单的把SQL变量与数组SQL变量混用
- 在UPDATE或DELETE语句中,不允许把数组和CURRENT OF子句一起使用
九、VARCHAR变量的声明和引用
VARCHAR变量的声明
在声明为VARCHAR vstring[20];的时候(必须指出大小,范围1~65533)
预编译截断会被翻译成C语言的一个结构变量
struct{
unsigned short len;
unsigned char arr[20]’
}vstring
VARCHAR变量的引用
- SQL语句中需要使用:作为前准
- C语言中与结构体用法一致
VARCHAR vstring[100];
EXEC SQL SELECT XXX INTO :vstring FROM…
则需要
vstring.arr[vstring.len]=’\0’;
用vstring的内容长度,在其最后一位标上NULL表示终结
而如果作为输入,则需要预先将长度计算后赋予len属性中。
分享到:
相关推荐
### ProC基础教程简化版Vol4:登录详解 #### 前言 本文档旨在详细介绍如何使用Pro*C/C++(简称ProC)与Oracle数据库进行交互,并特别关注于登录过程。无论是在开发还是维护阶段,登录操作都是必不可少的一步,它...
### ProC基础教程—简化版 Vol5:基本增删改 #### 数据插入 **概述** 在Pro*C/C++(简称ProC)中进行数据插入,主要是通过嵌入式的`INSERT`语句来实现的。ProC是一种将SQL语句嵌入到C语言中的编程方式,它允许...
这是一款自定义指标,其名称中的“KlPrice”可能代表价格波动的关键水平,“Vol”暗示了它与成交量有关,而“Direct”则可能表示方向或趋势判断。结合描述中的“时段选择选项”,我们可以推测该指标是基于不同时间...
本次介绍的文档——“LS-DYNA 971 R6.1.0关键字手册卷二”(LS-DYNA_manual_Vol_II_R6.1.0)是关于**LS-DYNA**软件中材料模型部分的详细介绍,发布于2012年8月,版本号为971 R6.1.0。 #### 二、文档结构与主要内容 ...
### ProC基础教程—简化版Vol2:通讯区详解 #### 一、通讯区简介 在Oracle数据库的应用程序开发过程中,通讯区起到了桥梁的作用,它能够帮助开发者获取SQL语句执行后的状态信息,从而便于进行错误处理和追踪。...
1. **基础理论**:解释PBR的基础概念,包括BRDF(双向反射分布函数)、BSDF(双向散射分布函数)和照明模型,这些都是理解PBR的关键。 2. **材质系统**:详细介绍如何设置和调整PBR材质参数,以达到所需的视觉效果...
根据提供的文档信息,本文将对《EP-DCXX84_V1 Experion Control Builder Components Theory Vol 1 of 2》这一文档所涉及的核心知识点进行详细的解析与介绍。该文档主要介绍了Honeywell Experion Control Builder软件...
- 在定义材料属性时,需确保选择与实际情况相匹配的材料模型。 - 正确设定单元类型对于获得准确的结果至关重要。 - 接触面定义的准确性直接影响到模拟结果的真实性。 - 载荷和边界条件的设定要充分考虑实际工况...
《基于i-KlPrice_Vol_Direct指标信号的MetaTrader 5 EA交易系统详解》 在金融交易领域,自动交易系统已经成为许多投资者和交易者的首选工具。MetaTrader 5(MT5)作为一款强大的外汇交易平台,提供了丰富的功能,...
- **值**: `0.00000000E+00 -1.50000001E-03 ... -2.08000004E-01` - **意义**: 定义了从零到负应变范围内的十个不同体积应变点。 **$Pressure01-Pressure10** - **值**: `0.00000000E+00 2.64478149E-04 ... 5....
Infineon-AURIX_TC39x_UserManual- V1.5 2020.04
首先,"i-KlPrice_Vol_Direct"脚本的核心是其自定义指标i-KlPrice_Vol,它以柱形图为基础,揭示了价格变动的方向。在传统的柱形图中,每一根柱子代表一段时间内的开盘价、收盘价、最高价和最低价。而此指标则在这些...
《PBR材质宝典_PBR_Guide_Vol2_中文版》是一本专注于PBR(基于物理的渲染,Physics-Based Rendering)技术的专业书籍,对于学习和掌握PBR材质系统具有极高的价值。PBR是现代3D图形学中的重要概念,它通过模拟真实...
本文档包含Intel 64和IA-32架构软件开发者手册的全部四卷。基本架构,卷号 253665;指令集参考 A-Z,卷号 325383;系统编程指南,卷号号 325384;特定型号寄存器,卷号号 335592。在评估您的设计需求时,请参考所有...
《TriCore核心架构32位Unifi_V1.3_vol1.pdf》是Infineon Technologies AG发布的一份关于TriCore内核的详细技术手册,主要针对V1.3及V1.3.1架构进行了深入阐述。这本书籍是理解TriCore处理器核心操作的关键资源,对于...
2. "Functional Description"深入讨论了内存各部分的功能,例如不同类型的内存段(Segments)是如何划分和作用的。 3. "Bus Fabric SRI"涉及系统资源接口,这是连接处理器核和其他内存及外设的内部总线。 4. "Bus ...
因此,在使用特定基于TriCore的产品时,应参考相应的支持文档,以获取与该实现相关的所有特定特性。 本手册覆盖了多个在生产设备中实现的TriCore架构版本。请注意,除非文本中有明确说明,所有描述均适用于此序言中...