一、变量声明
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属性中。
分享到:
相关推荐
节点 网络中的通讯点叫做节点,一般而言都是将数据从一个节点传输到另外一个节点 协议 网络上存储的一组规则。 SQL*Net连接语法 SQL*Net通过DECnet(协议)的默认数据库连接语法为 d:node
主要介绍基本的CRUD操作语句以及相关知识点。 数据插入 使用嵌入式INSERT语句一次插入一行或多行记录 一行记录 EXEC SQL INSERT INTO TALBE_NAME (XXX,XXX,XXX) VALUE (:xxx,:xxx,:xxx);
CFR-2014-title47-vol1-part15_FCC测试标准CFR-2014-title47-vol1-part15_FCC测试标准CFR-2014-title47-vol1-part15_FCC测试标准CFR-2014-title47-vol1-part15_FCC测试标准CFR-2014-title47-vol1-part15_FCC测试标准...
PBR_Guide_PBR_vol-2详解_中文版.pdf PBR_Guide_PBR_vol-2_中文版 PBR_Guide_PBR_中文版
dyna最新版手册,LS-DYNA_Manual_Volume_II_R11,英文版,必备!
EP-DCXX84_V1 Experion Control Builder Components Theory Vol 1 of 2.pdf
LS-DYNA_manual_Vol_I_R6.1.0
L2存储(1.2.3.5)--IBM__BPA__考试_题库
PBR材质宝典_PBR_Guide_Vol1_中文版 pbr 学习必备资料
Sanet.st_Deep_Learning,_Vol._2_From_Basics_to_Practice_-_Andrew_Glassner_带书签.pdf
什么是SQLCA SQLCA是ORACLE和应用程序的一个接口,主要用于错误诊断和时间处理 执行PRR*C程序时,ORACLE把每一个嵌入SQL状态信息存入SQLCA中,主要有错误代码、警告标致设置、诊断文本和处理行数等。
C#_TrainerHandbook_的10563A-CHS_TrainerHandbook_Vol1
本文档包含Intel 64和IA-32架构软件开发者手册的全部四卷。基本架构,卷号 253665;指令集参考 A-Z,卷号 325383;系统编程指南,卷号号 325384;特定型号寄存器,卷号号 335592。在评估您的设计需求时,请参考所有...
在输入参数中带有时段选择选项的 i-KlPrice_Vol_Direct 指标
包含各种语言/版本的ESD下载地址(微软官方) 请自行筛选 例如: 10240.16384.150709-1700.th1_CLIENTCHINA_RET_x64fre_zh-cn.esd CoreConnectedCountrySpecific 10240.16384.150709-1700.th1_CLIENTCHINA_RET_x64...
LS-DYNA® KEYWORD USER'S MANUAL VOLUME II Material Models August 2012 Version 971 R6.1.0
PBR材质宝典_PBR_Guide_Vol2_中文版 pbr 学习必备资料
OMS-Spec_Vol1_General_v201_RELEASE