`
akiraray
  • 浏览: 90331 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Pro*C 基础教程-简化版_Vol1 类型与变量

阅读更多

一、变量声明

  • 声明区域

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个字节

 

  • SQL伪劣和函数

 

名称 内部数据类型 代码 描述
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进制数据

 

 

  • SQL变量数据类型

 

 

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形式在数据库

自定义类型等价

  • 方法1

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 登录

      ### ProC基础教程简化版Vol4:登录详解 #### 前言 本文档旨在详细介绍如何使用Pro*C/C++(简称ProC)与Oracle数据库进行交互,并特别关注于登录过程。无论是在开发还是维护阶段,登录操作都是必不可少的一步,它...

      ProC 基础教程-简化版_Vol5 基本增删改

      ### ProC基础教程—简化版 Vol5:基本增删改 #### 数据插入 **概述** 在Pro*C/C++(简称ProC)中进行数据插入,主要是通过嵌入式的`INSERT`语句来实现的。ProC是一种将SQL语句嵌入到C语言中的编程方式,它允许...

      i-KlPrice_Vol_Direct_HTF - MetaTrader 5脚本.zip

      这是一款自定义指标,其名称中的“KlPrice”可能代表价格波动的关键水平,“Vol”暗示了它与成交量有关,而“Direct”则可能表示方向或趋势判断。结合描述中的“时段选择选项”,我们可以推测该指标是基于不同时间...

      LS-DYNA 971 R6.1.0关键字手册卷二[LS-DYNA_manual_Vol_II_R6.1.0]

      本次介绍的文档——“LS-DYNA 971 R6.1.0关键字手册卷二”(LS-DYNA_manual_Vol_II_R6.1.0)是关于**LS-DYNA**软件中材料模型部分的详细介绍,发布于2012年8月,版本号为971 R6.1.0。 #### 二、文档结构与主要内容 ...

      ProC 基础教程-简化版 Vol2 通讯区

      ### ProC基础教程—简化版Vol2:通讯区详解 #### 一、通讯区简介 在Oracle数据库的应用程序开发过程中,通讯区起到了桥梁的作用,它能够帮助开发者获取SQL语句执行后的状态信息,从而便于进行错误处理和追踪。...

      PBR_Guide_PBR_vol-2详解_中文版.rar

      1. **基础理论**:解释PBR的基础概念,包括BRDF(双向反射分布函数)、BSDF(双向散射分布函数)和照明模型,这些都是理解PBR的关键。 2. **材质系统**:详细介绍如何设置和调整PBR材质参数,以达到所需的视觉效果...

      EP-DCXX84_V1 Experion Control Builder Components Theory Vol 1 of 2.pdf

      根据提供的文档信息,本文将对《EP-DCXX84_V1 Experion Control Builder Components Theory Vol 1 of 2》这一文档所涉及的核心知识点进行详细的解析与介绍。该文档主要介绍了Honeywell Experion Control Builder软件...

      LS-DYNA 971 R6.1.0关键字手册卷一[LS-DYNA_manual_Vol_I_R6.1.0]

      - 在定义材料属性时,需确保选择与实际情况相匹配的材料模型。 - 正确设定单元类型对于获得准确的结果至关重要。 - 接触面定义的准确性直接影响到模拟结果的真实性。 - 载荷和边界条件的设定要充分考虑实际工况...

      Exp_i-KlPrice_Vol_Direct - MetaTrader 5EA.zip

      《基于i-KlPrice_Vol_Direct指标信号的MetaTrader 5 EA交易系统详解》 在金融交易领域,自动交易系统已经成为许多投资者和交易者的首选工具。MetaTrader 5(MT5)作为一款强大的外汇交易平台,提供了丰富的功能,...

      *MAT_Concrete_Damage_Rel3参数

      - **值**: `0.00000000E+00 -1.50000001E-03 ... -2.08000004E-01` - **意义**: 定义了从零到负应变范围内的十个不同体积应变点。 **$Pressure01-Pressure10** - **值**: `0.00000000E+00 2.64478149E-04 ... 5....

      Infineon-AURIX_TC39x_UserManual-v01_0..pdf

      Infineon-AURIX_TC39x_UserManual- V1.5 2020.04

      i-KlPrice_Vol_Direct - MetaTrader 5脚本.zip

      首先,"i-KlPrice_Vol_Direct"脚本的核心是其自定义指标i-KlPrice_Vol,它以柱形图为基础,揭示了价格变动的方向。在传统的柱形图中,每一根柱子代表一段时间内的开盘价、收盘价、最高价和最低价。而此指标则在这些...

      PBR材质宝典_PBR_Guide_Vol2_中文版_vol_pbr_pbrt_

      《PBR材质宝典_PBR_Guide_Vol2_中文版》是一本专注于PBR(基于物理的渲染,Physics-Based Rendering)技术的专业书籍,对于学习和掌握PBR材质系统具有极高的价值。PBR是现代3D图形学中的重要概念,它通过模拟真实...

      325462-sdm-vol-1-2abcd-3abcd_intel处理器开发手册_44200_volume_

      本文档包含Intel 64和IA-32架构软件开发者手册的全部四卷。基本架构,卷号 253665;指令集参考 A-Z,卷号 325383;系统编程指南,卷号号 325384;特定型号寄存器,卷号号 335592。在评估您的设计需求时,请参考所有...

      TriCore Core Architecture 32-bit Unifi_V1.3_vol1.pdf

      《TriCore核心架构32位Unifi_V1.3_vol1.pdf》是Infineon Technologies AG发布的一份关于TriCore内核的详细技术手册,主要针对V1.3及V1.3.1架构进行了深入阐述。这本书籍是理解TriCore处理器核心操作的关键资源,对于...

      Infineon-AURIX_TC37x-UserManual-v01_00-EN

      2. "Functional Description"深入讨论了内存各部分的功能,例如不同类型的内存段(Segments)是如何划分和作用的。 3. "Bus Fabric SRI"涉及系统资源接口,这是连接处理器核和其他内存及外设的内部总线。 4. "Bus ...

      Infineon-AURIX-TC3xx-Architecture-vol2-UserManual-v01-00-EN

      因此,在使用特定基于TriCore的产品时,应参考相应的支持文档,以获取与该实现相关的所有特定特性。 本手册覆盖了多个在生产设备中实现的TriCore架构版本。请注意,除非文本中有明确说明,所有描述均适用于此序言中...

    Global site tag (gtag.js) - Google Analytics